Fre*_*lam 4 arrays design-patterns scala final class
Scala中是否有可以向Array对象添加方法的模式?
我在考虑将Int隐式转换为RichInt.但是这不可能,因为Array是最后一堂课.
Rex*_*err 11
只要你避免与任何其他隐式的名称冲突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
Run Code Online (Sandbox Code Playgroud)
final输入类的-ness 不会阻止隐式转换.String例如,有一个隐式转换为RichString(Scala 2.7)或StringOps(Scala 2.8).
所以,你可以自由定义隐式转换为Array 有一个关键的警告:必须从放弃Scala的内置隐式转换Array到ArrayOps(Scala中仅2.8).