2010-05-06 2 views

ответ

11

До тех пор, как вы избежать конфликтов имен с любым другим неявным на Array (например ArrayOps в 2.8, который добавляет методы коллекций), можно расширить с помощью обычного неявного сутенера-моя библиотека картина:

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 
6

Неявные преобразования не препятствуют final -ness класса ввода. String, например, имеет неявное преобразование в RichString (Scala 2.7) или StringOps (Scala 2.8).

Таким образом, вы можете свободно определить неявные преобразования для Arrayс одним ключевым предостережением: Вы должны отказаться от встроенного неявного преобразования Scala от Array до ArrayOps (в Scala 2.8 только).

 Смежные вопросы

  • Нет связанных вопросов^_^