Scala 中是否有可以向 Array 对象添加方法的模式?
我正在考虑将 Int 隐式转换为 RichInt。但这无法做到,因为 Array 是最终类。
Scala 中是否有可以向 Array 对象添加方法的模式?
我正在考虑将 Int 隐式转换为 RichInt。但这无法做到,因为 Array 是最终类。
只要您避免与任何其他隐式名称冲突Array(例如ArrayOps,在 2.8 中,它添加了集合方法),您就可以使用普通的隐式 pimp-my-library 模式进行扩展:
class FooArray[T](at: Array[T]) {
def foo() = at.length*at.length
}
implicit def array2foo[T](at: Array[T]) = new FooArray(at)
scala> Array(1,2,3).foo
res2: Int = 9
final输入类的 -ness 不会阻止隐式转换。String例如,隐式转换为RichString(Scala 2.7) 或StringOps(Scala 2.8)。
因此,您可以Array 通过一个关键警告自由定义隐式转换:您必须放弃 Scala 的内置隐式转换 from Arrayto ArrayOps(仅在 Scala 2.8 中)。