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

Scala类型扩展/推断foo [T](T,T):T

发布时间:2020-12-16 19:14:46 所属栏目:安全 来源:网络整理
导读:假设有三个功能: def foo[T](a:T,b:T): T = a def test1 = foo(1,"2") def test2 = foo(List(),ListBuffer()) 虽然test1的类型为Any,但test2不会编译.这是为什么? List()和ListBuffer()都是Any类型,那么为什么test2也不是Any类型呢?它们都是SeqFactory类
假设有三个功能:

def foo[T](a:T,b:T): T = a 
def test1 = foo(1,"2") 
def test2 = foo(List(),ListBuffer())

虽然test1的类型为Any,但test2不会编译.这是为什么? List()和ListBuffer()都是Any类型,那么为什么test2也不是Any类型呢?它们都是SeqFactory类型,因此Scala能以某种方式推断出test2的类型是SeqFactory吗?

foo(ListBuffer(),“”)和foo(List(),“”)按预期工作

解决方法

对我来说看起来像个错误. Scala首先推断Seq [Nothing] {def seq:Seq [Nothing] {def companion:scala.collection.generic.GenericCompanion [Seq [Any]]}; def伴侣:scala.collection.generic.GenericCompanion [Seq [Any]]},然后决定ListBuffer [Nothing]不适合那种类型.

(编辑:李大同)

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

    推荐文章
      热点阅读