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 Array
to ArrayOps
(仅在 Scala 2.8 中)。