メソッドをArrayオブジェクトに追加できるScalaのパターンはありますか?
Int から RichInt への暗黙的な変換を考えています。しかし、Array は final クラスであるため、それはできません。
メソッドをArrayオブジェクトに追加できるScalaのパターンはありますか?
Int から RichInt への暗黙的な変換を考えています。しかし、Array は final クラスであるため、それはできません。
他の暗黙的な on との名前の衝突を回避する限り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
したがって、1 つの重要な注意事項があれば、 for の暗黙的な変換を自由に定義できます。Scala に組み込まれているArray
toからの暗黙的な変換は無視する必要がありますArrayOps
(Scala 2.8 のみ)。