加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:为什么Seq.contains取任何参数,而不是序列类型的参数?

发布时间:2020-12-16 09:41:18 所属栏目:安全 来源:网络整理
导读:所以例如为什么List(1,2,3,4).contains(“wtf”)甚至编译?如果编译器拒绝这样做不会很好吗? 解决方法 许多有趣的答案,但这是我自己的理论:如果包含没有收到任何,那么Seq不能是共同的变体。 例如,参见Set,它不是共同变体,其中包含A而不是Any。 这样做
所以例如为什么List(1,2,3,4).contains(“wtf”)甚至编译?如果编译器拒绝这样做不会很好吗?

解决方法

许多有趣的答案,但这是我自己的理论:如果包含没有收到任何,那么Seq不能是共同的变体。

例如,参见Set,它不是共同变体,其中包含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 ==)
                      ^

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读