【发布时间】:2013-09-25 17:51:29
【问题描述】:
据我了解,隐式转换可能会导致代码难以理解,或者代码存在其他问题(甚至可能是错误?),这就是为什么它们需要显式启用才能在代码中使用而不会收到警告.
但是,鉴于隐式转换在很大程度上(如果不是大部分时间)用于用另一种类型的对象包装对象,隐式类也是如此 - 如果我是,我会很感激你纠正我错了——为什么前者需要导入scala.language.implicitConversions,而后者不需要?
object Main extends App {
implicit class StringFoo(x: String) {
def fooWithImplicitClass(): Unit =
println("foo with implicit class")
}
// => silence.
"asd".fooWithImplicitClass()
/************************/
class Foo(x: String) {
def fooWithImplicitDef(): Unit =
println("foo with implicit def")
}
implicit def string2Foo(x: String) = new Foo(x)
// => warning: implicit conversion method string2Foo should be enabled
"asd".fooWithImplicitDef()
}
【问题讨论】:
标签: scala type-conversion implicit-conversion