Например, List.contains, вот исходный код scala api.Какова цель или значение: в scala
def contains[A1 >: A](elem: A1): Boolean = {
var these = this
while (!these.isEmpty) {
if (these.head == elem) return true
these = these.tail
}
false
Я понимаю, взаимосвязанность теории коды, но что о типе A1 >: A
?
Я думаю, >:
как isInstanceOf
или что-то вроде того, чтобы ограничить тип входного параметра?
Может кто-нибудь дать краткое объяснение или некоторые документы, так что я могу получить некоторые исследования
Я был озадачен содержит метод подписи визави его поведение принимать аргумент любого типа. Таким образом, метод contains is * not * type safe. Разве у дизайнеров не было способа сделать безопасный тип содержимого безопасным? – Samar
Почему он не безопасен? В моем последнем примере то, что возвращается, не 'Object', это близкий общий предок' Pear' и 'Apple'. Так что это не _any_ тип. –
Давайте скажем 'val ls: List [Int] = List (1,2,3,4)'. Теперь, согласно сигнатуре метода 'contains', аргумент типа' A1' должен быть супер-типом 'Int'. Но мы можем передать аргумент любого типа в 'contains', и компилятор не жалуется. Это меня смущает. – Samar