我最近发现可以使用Pimp Enrich My Library 模式向伴随对象添加方法.type
:
object Whatever { }
implicit class WhateverExtensions(val obj: Whatever.type) {
def greet = println("Hi!")
}
Whatever.greet
不幸的是,这似乎不适用于包对象,例如scala.math
:
implicit class MathExtensions(val obj: scala.math.type) {
def min(x: Money, y: Money): Money = ???
}
我收到以下编译器错误:
错误:(153, 47) 类型不匹配; 找到:math.type 必需:AnyRef 请注意,数学扩展了 Any,而不是 AnyRef。 此类类型可以参与值类,但实例 不能出现在单例类型或参考比较中。 隐式类 MathExtensions(val obj: scala.math.type) 扩展 AnyVal { ^
是否可以丰富一个包对象?