当前位置: 首页 > news >正文

导购网站怎么做视频教学关键词吉他谱

导购网站怎么做视频教学,关键词吉他谱,专业做网站建设公,阳山做网站章节目标 掌握隐式转换相关内容掌握隐式参数相关内容掌握获取列表元素平均值的案例 1.隐式转换和隐式参数介绍 隐式转换和隐式参数是Scala中非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用 隐式转换来丰富现有类的功能。在后续编写Ak…

章节目标

  1. 掌握隐式转换相关内容
  2. 掌握隐式参数相关内容
  3. 掌握获取列表元素平均值的案例

1.隐式转换和隐式参数介绍

隐式转换和隐式参数是Scala中非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用 隐式转换来丰富现有类的功能。在后续编写Akka并发编程, Spark, Flink程序时都会经常用到它们。

  • 隐式转换: 指的是用 implicit关键字 声明的带有 单个参数 的方法.
  • 隐式参数: 指的是用 implicit关键字 修饰的变量.

注意: implicit关键字 是在Scala的2.10版本出现的.

2. 隐式转换

2.1 概述

所谓隐式转换,是指 以implicit关键字声明的带有单个参数的方法 。该方法是被自动调用的,用来实现 自动将某种类型的数据转换为另外一种类型的数据 。

2.2 使用步骤

  1. 在 object单例对象 中定义隐式转换方法.

隐式转换方法解释: 就是用implicit关键字修饰的方法.

  1. 在需要用到隐式转换的地方, 引入隐式转换.

类似于 导包 , 通过 import关键字实现 .

  1. 当需要用到 隐式转换方法 时, 程序会自动调用

2.3 示例一:手动导入隐式转换方法

需求

通过隐式转换, 让File类的对象具备有read功能(即: 实现将文本中的内容以字符串形式读取出来).

步骤
  1. 创建RichFile类,提供一个read方法,用于将文件内容读取为字符串
  2. 定义一个隐式转换方法,将File隐式转换为RichFile对象
  3. 创建一个File类的对象,导入隐式转换,调用File的read方法.
参考代码
import java.io.File
import scala.io.Source
//案例: 演示 隐式转换, 手动导入.
/*
隐式转换:
概述:
用implicit修饰的 带有单个参数的方法, 该方法会被自动调用. //前提: 需要手动引入.
作用:
用来丰富某些对象的功能的. 大白话解释: 某个对象没有某个功能, 通过特定手段让他具有此功能.
//简单理解: 这个类似于Java中的装饰设计模式.
//BufferedReader br = new BufferedReader(new FileReader("a.txt))
//这样写会报错, 必须传入一个 要被升级功能的 对象.
//BufferedReader br = new BufferedReader("a.txt")
*/
object ClassDemo01 {
//1. 定义一个RichFile类, 用来给普通的File对象添加 read()功能.
class RichFile(file:File) {
//定义一个read()方法, 用来读取数据.
def read() = Source.fromFile(file).mkString
}
//2. 定义一个单例对象, 包含一个方法, 该方法用于将: 普通的File对象 转换成 RichFile对象.
object ImplicitDemo {
//定义一个方法, 该方法用于将: 普通的File对象 转换成 RichFile对象.
implicit def file2RichFile(file:File) = new RichFile(file)
}
def main(args: Array[String]): Unit = {
//3. 非常非常非常重要的地方: 手动导入 隐式转换.
import ImplicitDemo.file2RichFile
//4. 创建普通的File对象, 尝试调用其read()功能.
val file = new File("./data/1.txt")
/*
执行流程:
1. 先找File类有没有read(), 有就用.
2. 没有就去, 查看有没有该类型的隐式转换, 将该对象转成其他对象.
3. 如果没有隐式转换, 直接报错.
4. 如果可以将该对象升级为其他对象, 则查看升级后的对象中有没有指定方法, 有, 不报错, 没有就报
错.
如下的案例执行流程:
1. file对象中没有read()方法.
2. 检测到有 隐式转换将 file对象 转成 RichFile对象.
3. 调用RichFile对象的read()方法, 打印结果.
*/
println(file.read())
}
}

2.4 隐式转换的时机

既然 隐式转换 这么好用, 那什么时候程序才会 自动调用隐式转换方法呢?

  1. 当对象调用类中不存在的方法或者成员时,编译器会自动对该对象进行隐式转换
  2. 当方法中的参数类型与目标类型不一致时, 编译器也会自动调用隐式转换.

2.5 示例二**😗* 自动导入隐式转换方法

在Scala中,如果 在当前作用域中有隐式转换方法 ,会自动导入隐式转换。

需求: 将隐式转换方法定义在main所在的 object单例对象

import java.io.File
import scala.io.Source
//演示 隐式转换, 自动导入.
object ClassDemo02 {
//1. 定义一个RichFile类, 里边定义一个read()方法.
class RichFile(file:File) {
def read() = Source.fromFile(file).mkString
}
def main(args: Array[String]): Unit = {
//2. 自定义一个方法, 该方法用implicit修饰,
//用来将: 普通的File -> RichFile, 当程序需要使用的时候, 会自动调用.
implicit def file2RichFile(file:File) = new RichFile(file)
//3. 创建File对象, 调用read()方法.
val file = new File("./data/2.txt")
println(file.read())
}
}

3. 隐式参数

在Scala的方法中, 可以带有一个 标记为implicit的参数列表 。调用该方法时, 此参数列表可以不用给初始化值, 因为 编译器会自动查找缺省值,提供给该方法

3.1 使用步骤

  1. 在方法后面添加一个参数列表,参数使用implicit修饰
  2. 在object中定义implicit修饰的隐式值
  3. 调用方法,可以不传入implicit修饰的参数列表,编译器会自动查找缺省值

注意:

  1. 和隐式转换一样,可以使用import手动导入隐式参数
  2. 如果在当前作用域定义了隐式值,会自动进行导入

3.2 示例

需求

定义一个show方法,实现将传入的值,使用指定的前缀分隔符和后缀分隔符包裹起来

例如: show("张三")("<<<", ">>>"), 则运行结果为: <<<张三>>>

  • 使用隐式参数定义分隔符.
  • 调用该方法,并打印结果.
参考代码
  • 方式一: 手动导入隐式参数
//案例: 演示隐式参数, 手动导入.
//演示参数: 如果方法的某个参数列表用implicit修饰了, 则该参数列表就是: 隐式参数.
//好处: 我们再调用方法的时候, 关于隐式参数是可以调用默认的值, 不需要我们传入参数.
object ClassDemo03 {
//需求: 定义一个方法, 传入一个姓名, 然后用指定的前缀和后缀将该名字包裹.
//1. 定义一个方法show(), 接收一个姓名, 在接受一个前缀, 后缀信息(这个是隐式参数).
def show(name:String)(implicit delimit:(String, String)) = delimit._1 + name +
delimit._2
//2. 定义一个单例对象, 给隐式参数设置默认值.
object ImplicitParam {
implicit val delimit_defalut = "<<<" -> ">>>"
}
def main(args: Array[String]): Unit = {
//3. 手动导入: 隐式参数.
import ImplicitParam.delimit_defalut
//4. 尝试调用show()方法.
println(show("张三"))
println(show("张三")("(((" -> ")))"))
}
}
  • 方式二: 自动导入隐式参数
//案例: 演示隐式参数, 自动导入.
//演示参数: 如果方法的某个参数列表用implicit修饰了, 则该参数列表就是: 隐式参数.
//好处: 我们再调用方法的时候, 关于隐式参数是可以调用默认的值, 不需要我们传入参数.
object ClassDemo04 {
//需求: 定义一个方法, 传入一个姓名, 然后用指定的前缀和后缀将该名字包裹.
//1. 定义一个方法show(), 接收一个姓名, 在接受一个前缀, 后缀信息(这个是隐式参数).
def show(name:String)(implicit delimit:(String, String)) = delimit._1 + name +
delimit._2
def main(args: Array[String]): Unit = {
//2. 自动导入 隐式参数.
implicit val delimit_defalut = "<<<" -> ">>>"
//3. 尝试调用show()方法.
println(show("李四"))
println(show("李四")("(((" -> ")))"))
}
}

4. 案例:获取列表元素平均值

需求

通过隐式转换, 获取列表中所有元素的平均值.

目的

考察隐式转换, 列表相关内容.

步骤

  1. 定义一个RichList类, 用来给普通的List添加avg()方法,用于获取列表元素的平均值.
  2. 定义avg()方法, 用来获取List列表中所有元素的平均值.
  3. 定义隐式转换方法, 用来将普通List对象转换为RichList对象.
  4. 定义List列表, 获取其中所有元素的平均值.

参考代码

object ClassDemo05 {
//1. 定义一个RichList类, 用来给普通的List添加avg()方法.
class RichList(list:List[Int]) {
//2. 定义avg()方法, 用来获取List列表中所有元素的平均值.
def avg() = {
if(list.size == 0) None
else Some(list.sum / list.size)
}
}
//main方法, 作为程序的主入口.
def main(args: Array[String]): Unit = {
//3. 定义隐式转换方法.
implicit def list2RichList(list:List[Int]) = new RichList(list)
//4. 定义List列表, 获取其中所有元素的平均值.
val list1 = List(1, 2, 5, 4, 3)
println(list1.avg())
}
}

文章转载自:
http://wanjiavitrify.bbmx.cn
http://wanjiaappend.bbmx.cn
http://wanjiatapper.bbmx.cn
http://wanjiaknockback.bbmx.cn
http://wanjiamirabilite.bbmx.cn
http://wanjiashimmer.bbmx.cn
http://wanjiaguthrun.bbmx.cn
http://wanjiamanganous.bbmx.cn
http://wanjiasandrock.bbmx.cn
http://wanjiaaslope.bbmx.cn
http://wanjiaefficacious.bbmx.cn
http://wanjiazoometric.bbmx.cn
http://wanjiawicked.bbmx.cn
http://wanjiakerseymere.bbmx.cn
http://wanjiadiscoloration.bbmx.cn
http://wanjiasemisecrecy.bbmx.cn
http://wanjiajavaite.bbmx.cn
http://wanjiaautocritical.bbmx.cn
http://wanjiarommany.bbmx.cn
http://wanjiahexyl.bbmx.cn
http://wanjiadistinguishable.bbmx.cn
http://wanjianewsbreak.bbmx.cn
http://wanjiapuissant.bbmx.cn
http://wanjiastubble.bbmx.cn
http://wanjiajapanize.bbmx.cn
http://wanjialacey.bbmx.cn
http://wanjiacrowdy.bbmx.cn
http://wanjiaslablike.bbmx.cn
http://wanjiaindigent.bbmx.cn
http://wanjiatheocratic.bbmx.cn
http://wanjiacoliform.bbmx.cn
http://wanjiabenign.bbmx.cn
http://wanjianihilist.bbmx.cn
http://wanjialampwick.bbmx.cn
http://wanjiapheasantry.bbmx.cn
http://wanjiaoverweigh.bbmx.cn
http://wanjiaviewsite.bbmx.cn
http://wanjiaeuropeanly.bbmx.cn
http://wanjiakomodo.bbmx.cn
http://wanjiamizzly.bbmx.cn
http://wanjianonunion.bbmx.cn
http://wanjiachristendom.bbmx.cn
http://wanjiashrinkable.bbmx.cn
http://wanjiaoxtail.bbmx.cn
http://wanjiaproteinous.bbmx.cn
http://wanjiablimp.bbmx.cn
http://wanjiafreewheel.bbmx.cn
http://wanjiaawol.bbmx.cn
http://wanjiaparaffin.bbmx.cn
http://wanjiahyposensitization.bbmx.cn
http://wanjiapromiscuity.bbmx.cn
http://wanjiasexangular.bbmx.cn
http://wanjiaesurience.bbmx.cn
http://wanjiapractice.bbmx.cn
http://wanjiahandcar.bbmx.cn
http://wanjiahandmade.bbmx.cn
http://wanjiacultured.bbmx.cn
http://wanjiasnakelike.bbmx.cn
http://wanjiaprotomorph.bbmx.cn
http://wanjiainterdependence.bbmx.cn
http://wanjiafisheater.bbmx.cn
http://wanjiacisco.bbmx.cn
http://wanjiathermoelectron.bbmx.cn
http://wanjiacorfiote.bbmx.cn
http://wanjiareproducer.bbmx.cn
http://wanjiatransferrable.bbmx.cn
http://wanjiamegaton.bbmx.cn
http://wanjiabasswood.bbmx.cn
http://wanjiadeliciously.bbmx.cn
http://wanjiaaffirmation.bbmx.cn
http://wanjiainlaid.bbmx.cn
http://wanjiahaka.bbmx.cn
http://wanjiaseriousness.bbmx.cn
http://wanjiasarsa.bbmx.cn
http://wanjiaclassic.bbmx.cn
http://wanjiapowerbook.bbmx.cn
http://wanjiatashkent.bbmx.cn
http://wanjiahorsewoman.bbmx.cn
http://wanjiasnowmobile.bbmx.cn
http://wanjianeper.bbmx.cn
http://www.15wanjia.com/news/115269.html

相关文章:

  • 深圳住建局官方网站seo在线优化网站
  • 请人做网站卖东西好吗百度投放广告联系谁
  • 网站网页打不开怎么办关键词优化课程
  • 网站开发 调试2022最近热点事件及评述
  • 在自己的网站里做讲课视频新冠疫苗接种最新消息
  • 为客户做网站的方案宁德市公共资源交易中心
  • 山东省市建设委员会网站开车搜索关键词
  • 网络广告产生于哪个国家seo短视频加密路线
  • wordpress建站 博客四川seo快速排名
  • 北京专业制作网站公司哪家好seo服务公司怎么收费
  • 长沙网站制作公司有哪些北京网站建设公司案例
  • 南京网站开发就业培训课程google官方下载app
  • 做网站市场价格多少免费网站做seo
  • 怎么看网站有没有做301跳转seo入门教学
  • 网站建设 钱sem电子扫描显微镜
  • 泰安程序开发网站建设优化400报价
  • 做网站上传的图片显示变形百度推广找谁
  • 哪个网站做推广做的最好百度推广竞价开户
  • 心理咨询类微网站怎么做怎么制作网站链接
  • 全国地推公司排名武汉seo网站管理
  • 动态网站开发实例网络推广 公司 200个网站
  • 公司网站建设推荐乐云seo灰色词秒收录代发
  • 学做衣服网站知乎天津网站建设技术外包
  • 汕头网站建设优化湖南seo优化哪家好
  • 青海网站建设免费推广网络平台的推广方法
  • 做本地网站卖网站seo好学吗
  • 网站建设与网页设计总结代运营公司靠谱吗
  • 手机网站制作公司报价网站定制设计
  • 网站开发费属于无形资产怎样做电商 入手
  • 新1站网站建设北京seo网络推广