首页 > 解决方案 > 表示隐式转换的类型是什么意思

问题描述

scala 语言规范第7.2 节是关于隐式作用域的:它解释了隐式作用域是以某种方式与 type 的部分相关联的模块T。下面列出了 T 的各个部分。其中之一是

ifT表示隐式转换为具有参数类型T1,…,Tn和结果类型的方法的类型U,T1,...,Tn 和 U 部分的并集;

我不能从中做出正面或反面。我不明白类型 T 如何表示隐式转换。

隐式范围规范的这一部分是什么意思?

标签: scalaimplicit

解决方案


我相信这是指以下情况

case class Foo(v: Int)
object Foo {
  implicit def stringToFoo(s: String) = Foo(42)
}

def f[A](v: A)(implicit ev: A => Foo) = ev(v)

f("woohoo")

其中隐式转换type T = A => Foo,并且Foo是与类型参数相关联的部分A,因此object Foo成为隐式范围的一部分,stringToFoo并且无需导入即可解决隐式转换。


推荐阅读