Scala中的隐式类型如何参考此https://youtu.be/hc4ggcd3vly?t=263



如何在Scala中进行隐式类型,参考此https://youtu.be/hc4ggcd3vly?t=263。

我也不明白他为什么提到转换式对象是静态的。

让我们开始使用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)"

现在,您可以定义一个隐式方法,而不是每次将函数转换为所需类型,而是一旦看到您隐式转换器中定义的输入和输出,它将为您执行此操作。

示例,

scala> object NumberToString { implicit def wrapWithNumber(n: Int): String = s"Number(${n})" }
defined object NumberToString

请注意,NumberToString是单身班或Java World中的static类。

scala> import NumberToString._
import NumberToString._

现在,如果您只是定义了Int类型的变量,则不会发生转换,因为它已经是Int类型,并且编译器很高兴。

scala> val asItis = 1000
asItis: Int = 1000

但是,如果您给它一种不同的类型,则编译器将寻找隐式方法,并选择与之匹配的方法。

scala> val richInt: String = 1000
richInt: String = Number(1000)

相关内容

  • 没有找到相关文章

最新更新