如果我尝试为原始类型定义隐式转换,那么它似乎不起作用。例如:
implicit def globalIntToString(a: Int) : String = { a.toString() + "globalhi" }
1.toInt + "hi"
上面仍然会简单地返回“1hi”作为结果。
但是,似乎如果我参数化一个类或一个 def,然后为参数化的情况传递隐式,那么它似乎可以工作。有谁知道是什么原因?例如,这是否与图元的装箱/拆箱有关(例如,参数化的图元被装箱)?隐式是否仅适用于引用类型而不适用于原始类型?
class typeConv[T] { implicit def tToStr(a: T) : String = { a.toString() + "hi" } }
class t[K](a: K)(tc : typeConv[K]) { import tc._; println(a + "cool"); println(1.toInt + "cool" ) }
new t(1)(new typeConv[Int])