Scala 隐式 class 限制
Scala implicit class restriction
Scala documentation 声明隐式 class "must be defined inside of another trait/class/object"
这个限制的原因是什么?
referenced SIP 将隐式 classes 描述为 class
和 def
的语法糖。
Annotations on implicit classes default to attaching to the generated
class and the method. For example,
@bar
implicit class Foo(n: Int)
will desugar into:
@bar implicit def Foo(n: Int): Foo = new Foo(n)
@bar class Foo(n:Int)
因为 def
必须在 trait/class/object 内,隐含的 class 部分 "composed of" 和 def
,必须也遵守这个条件。
Scala documentation 声明隐式 class "must be defined inside of another trait/class/object"
这个限制的原因是什么?
referenced SIP 将隐式 classes 描述为 class
和 def
的语法糖。
Annotations on implicit classes default to attaching to the generated class and the method. For example,
@bar implicit class Foo(n: Int)
will desugar into:
@bar implicit def Foo(n: Int): Foo = new Foo(n) @bar class Foo(n:Int)
因为 def
必须在 trait/class/object 内,隐含的 class 部分 "composed of" 和 def
,必须也遵守这个条件。