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

scala.Unit和()不一样吗?

发布时间:2020-12-16 18:19:22 所属栏目:安全 来源:网络整理
导读:我从 Scala hierarchy中看到,AnyVal是scala.Unit,Boolean,Char和其他Number类型的超类型. scala val list1 = List((),1 ) list: List[AnyVal] = List((),1) // I see this is valid when compared with hierarchy tree.scala val list2 = List(Unit,1 )list:
我从 Scala hierarchy中看到,AnyVal是scala.Unit,Boolean,Char和其他Number类型的超类型.

scala> val list1 = List((),1 ) 
list: List[AnyVal] = List((),1)  // I see this is valid when compared with hierarchy tree.

scala> val list2 = List(Unit,1 )
list: List[Any] = List(object scala.Unit,1) // Why???

我看到list1的类型为AnyVal,其中list2的类型为Any,即使它们具有相同的数据(我假设).

是()与Scala.Unit不一样吗?我在这里错过了什么?

解决方法

要回答您的问题,()是scala.Unit类型的值.而scala.Unit是伴随对象,因此它的类型为Unit.type.

看看下面的REPL代码:

scala> (): scala.Unit
// (): scala.Unit

scala> scala.Unit
// res1: Unit.type = object scala.Unit

底线是您传递给协变列表的任何对象都将找到值共有的类型.见Why doesn’t the example compile,aka how does (co-,contra-,and in-) variance work?中的讨论

正如您所发现的,Integer和scala.Unit的常见类型是AnyVal. Intger和Unit.type的常见类型是Any.

(编辑:李大同)

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

    推荐文章
      热点阅读