Предположим, у меня есть класс MyList в scala со списком в качестве частного участника. Можно ли определить «()» для моего класса, чтобы вернуть ожидаемую вещь в случае положительного индекса, и начиная с конца в случае отрицательного (как и в python)?(Re) define() в scala
ответ
Это можно сделать с помощью метода: apply
class PythonicArray {
private val underlying = Array(1,2,3,4)
def apply(n: Int) = {
val i = if (n < 0) (underlying.length + n) else n
underlying(i)
}
}
Обычно я делаю это как однострочный с точно таким же содержимым: 'def apply (n: Int) = base (if (n <0) n + basic.length else n)' –
'apply' - это специальный метод имя. Он может использоваться как в объектах, так и в классах. При использовании в качестве имени метода не только используется специальное имя 'apply', но также имеется дополнительное имя специального метода unapply, используемое при извлечении частей в классе для сопоставления шаблонов и т. Д. Будьте осторожны, чтобы не злоупотреблять' apply' - вероятно, должен применяться принцип наименьшего удивления. –
- 1. Spark Scala 26035582 Re-visited
- 2. Play Scala template, define object vaiable
- 3. DEFINE SCALA перечисление с 2-мя свойствами
- 4. #define в #define; что происходит в препроцессоре?
- 5. #define
- 6. Как реализовать #define в другом #define?
- 7. #define далеко, #define рядом Windef.h
- 8. Re-Parenting Vs Re-naming в TFS?
- 9. Play 2.0.1 - Scala templates string concatting + re-usable code block
- 10. re module in Python
- 11. Re испытанного Будущее не Завершая
- 12. Использование предварительно определенного #define в новом #define в C
- 13. Scheme define-macro и/или define-syntax
- 14. C#define, основанный на другой ошибке #define
- 15. массив в #define
- 16. #define альтернатива в сборке?
- 17. #define в Boost, Jamfiles
- 18. Использование #define в #ifdef
- 19. Место #define в структуре
- 20. Ошибка компиляции в #define
- 21. define ObservableCollection в WPF
- 22. #define значение в stringFormat?
- 23. Странный #define в шаблоне?
- 24. Переопределить DEFINE в PigUnit
- 25. Для петли в #define
- 26. Использование 'define' в схеме
- 27. Эквивалент #define в Java?
- 28. Значение «\», используемое в #define
- 29. #define в Java
- 30. Re copy and re-order table
смотри также http://jackcoughonsoftware.blogspot.ru/2009/01/deeper-look-at-apply-method-in-scala.html –
отлично, спасибо. – user1377000