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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |