Я читал о Scala с ковариантными типами возврата для функций. Но как насчет его типов аргументов? Что такое FunctionX(T1,...,R)
?Какова дисперсия типов аргументов в Scala?
1
A
ответ
7
Если вы посмотрите на документацию для любого класса FunctionX
, вы увидите, что тип возврата является ко-вариантом, а типы аргументов контравариантными. Например, Function2 имеет подпись:
Function2[-T1, -T2, +R] extends AnyRef
Вы можете определить -
и +
до параметров типа, где -
означает контравариантным и +
коварианты.
Это означает, что данный
class Animal
class Dog extends Animal
затем
Function1[Animal, Dog] <: Function1[Dog, Dog]
Function1[Dog, Dog] <: Function1[Dog, Animal]
но
Function1[Dog, Animal] </: Function[Dog, Dog]
Function1[Animal, Animal] </: Function[Animal, Dog]
Другими словами, не функционирует обещание не меньше и не требуют не более
Смежные вопросы
- 1. оценки типа Scala и дисперсия
- 2. Scala компилятор СО- и противопоказана дисперсия правил
- 3. Scala: функция без аргументов
- 4. Тип типов в Scala
- 5. Преобразование типов в Scala
- 6. Определения типов в Scala
- 7. Какова цель анонимных типов?
- 8. Проверка типов аргументов Python
- 9. Извлечение общих типов аргументов
- 10. Обобщение типов аргументов
- 11. Составные типы, contra дисперсия и т. Д. В Scala
- 12. Scala: какова цель «переопределения»
- 13. Адаптирования списка аргументов в Scala
- 14. scala quasiquotes: сравнение типов
- 15. Scala класс типов композитов
- 16. Распаковка типов кортежей в Scala
- 17. Идентичные несоответствие типов в Scala
- 18. типов Scala самостоятельно в шаблону
- 19. Явное преобразование типов в Scala
- 20. избегайте преобразования типов в Scala
- 21. типов Scala и компиляция
- 22. Какова мотивация для классов типа Scala?
- 23. Какова цель анализа аргументов функций?
- 24. ковариация и дисперсия флип в Скале
- 25. Scala: несоответствие типов
- 26. Invalid дисперсия
- 27. Какова иерархия типов объектов WebSphere?
- 28. Какова опасность возвращения примитивных типов?
- 29. Какова важность правильных типов MIME?
- 30. несмещенная дисперсия в Theano
Типы аргументов контравариантны. –
Я нашел это как подходящий ответ на мой вопрос: http://stackoverflow.com/questions/4297019/scala-function-variance-and-overriding –