Scala中是否有一个Pattern向Array对象添加方法?

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)


Ran*_*ulz 6

final输入类的-ness 不会阻止隐式转换.String例如,有一个隐式转换为RichString(Scala 2.7)或StringOps(Scala 2.8).

所以,你可以自由定义隐式转换为Array 有一个关键的警告:必须从放弃Scala的内置隐式转换ArrayArrayOps(Scala中仅2.8).