为什么Scala中的隐式类必须驻留在另一个特征/类/对象中?

时间:2015-06-01 21:28:52

标签: scala

基于scala文档:http://docs.scala-lang.org/overviews/core/implicit-classes.html,隐式类有三个限制,我引用的第一个限制是

  

必须在另一个特征/类/对象

中定义它们

解释/证明这种限制的直觉/理由是什么?

1 个答案:

答案 0 :(得分:10)

隐式类分解为"正常" class和实例化类的隐式方法:

implicit class IntOps(i: Int) { def squared = i * i }

重写为

class IntOps(i: Int) { def squared = i * i }
implicit def IntOps(i: Int) = new IntOps(i)

但是在Scala中,您无法在对象或类之外定义方法(def IntOps)。这就是原因。