scala中的隐式类型如何参考这个https://youtu.be/hC4gGCD3vlY?t=263
How does implicit types in scala work with reference to this https://youtu.be/hC4gGCD3vlY?t=263
Scala 中的隐式类型如何参考这个https://youtu.be/hC4gGCD3vlY?t=263。
我也不明白他为什么提到convertAtoB对象是静态的。
让我们使用 implicitConversion
标志启动 scala REPL。
$ scala -language:implicitConversions
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.
假设您希望将所有整数包含在数字字符串中,如 "Number(input)"
。
现在,您不必每次都调用一个函数来将 int 转换为所需的类型,您可以定义一个隐式方法,一旦看到您在隐式转换器中定义的输入和输出,它就会为您完成。
示例,
scala> object NumberToString { implicit def wrapWithNumber(n: Int): String = s"Number(${n})" }
defined object NumberToString
请注意 NumberToString
是一个单例 class 或者 static
class 在 Java 世界中是什么。
scala> import NumberToString._
import NumberToString._
现在,如果您只定义 Int
类型的变量,将不会发生转换,因为它已经是 Int
类型并且编译器很满意。
scala> val asItis = 1000
asItis: Int = 1000
但是,如果您给它一个不同的类型,那么编译器将寻找隐式方法,并选择匹配的方法。
scala> val richInt: String = 1000
richInt: String = Number(1000)
Scala 中的隐式类型如何参考这个https://youtu.be/hC4gGCD3vlY?t=263。
我也不明白他为什么提到convertAtoB对象是静态的。
让我们使用 implicitConversion
标志启动 scala REPL。
$ scala -language:implicitConversions
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.
假设您希望将所有整数包含在数字字符串中,如 "Number(input)"
。
现在,您不必每次都调用一个函数来将 int 转换为所需的类型,您可以定义一个隐式方法,一旦看到您在隐式转换器中定义的输入和输出,它就会为您完成。
示例,
scala> object NumberToString { implicit def wrapWithNumber(n: Int): String = s"Number(${n})" }
defined object NumberToString
请注意 NumberToString
是一个单例 class 或者 static
class 在 Java 世界中是什么。
scala> import NumberToString._
import NumberToString._
现在,如果您只定义 Int
类型的变量,将不会发生转换,因为它已经是 Int
类型并且编译器很满意。
scala> val asItis = 1000
asItis: Int = 1000
但是,如果您给它一个不同的类型,那么编译器将寻找隐式方法,并选择匹配的方法。
scala> val richInt: String = 1000
richInt: String = Number(1000)