gpt4 book ai didi

Scala:为什么 Seq.contains 采用 Any 参数,而不是序列类型的参数?

转载 作者:行者123 更新时间:2023-12-03 11:26:14 24 4
gpt4 key购买 nike

例如,为什么 List(1,2,3,4).contains("wtf")甚至编译?如果编译器拒绝这个不是很好吗?

最佳答案

很多有趣的答案,但这是我自己的理论:如果 contains没有收到 Any ,然后 Seq不可能是协变的。

例如,参见 Set ,它不是协变的并且其 contains拿个 A而不是 Any .

其原因留给读者作为练习。 ;-) 但这里有一个提示:

scala> class Container[+A](elements: A*) {                         
| def contains(what: A): Boolean = elements exists (what ==)
| }
<console>:7: error: covariant type A occurs in contravariant position in type A of value what
def contains(what: A): Boolean = elements exists (what ==)
^

关于Scala:为什么 Seq.contains 采用 Any 参数,而不是序列类型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com