您的位置:首页 > 其它

Scala 隐式转换 隐式参数

2018-01-13 12:13 351 查看

隐式转换

所谓隐式转换函数(implicit conversion function)指的是那种以implicit 关键字声明的带有单个参数的函数

首先,看这个例子

implicit def file2RichFile(from: File): RichFile = new RichFile(from)


这是一个隐式转换方法,方法名为 file2RichFile 意为File转换成RichFile类型,该方法有一个参数为File类型,方法将from这个参数传入RichFile构造参数中

该方法需要写在对象中

object Test {
implicit def file2RichFile(from: File): RichFile = new RichFile(from)
}


RichFile类

class RichFile(val from: File) {
def read: String = Source.fromFile(from.getPath).mkString
}


测试:

object Test {
def main(args: Array[String]): Unit = {
import top.itning.implicits.Test2._
new File("").read
}
}


File 类本身没有read方法,但是用隐式转换将File类转换成了RichFile 类调用了read 方法

隐式参数

函数或方法可以带有一个标记为implicit的参数列表.这种情况下,编译器将会查找缺省值,提供给该函数或方法

首先定义一个类型为String类型的隐式函数

object Test {
implicit val str: String = "隐式参数"
}


在方法a中的参数标记为implicit,则在main方法中调用该方法不传参则编译器会查找对应类型的隐式参数,但前提需要导入

object Test {
def main(args: Array[String]): Unit = {
//导入
import t
4000
op.itning.implicits.Test2._
a
}

def a(implicit a: String): Unit = {
println(a)
}

}


执行结果

隐式参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: