Scala中的Any
和Unit
有什么区别?
我知道两者都是数据类型,但是有什么区别?
答案 0 :(得分:3)
Unit
类似于Java的void
,但它具有实际值(()
是类型Unit
的唯一值)。
Any
是所有其他类型的父类型。 ()
是Any
的实例。 1
是Any
的实例。 "Hello"
是Any
的实例。
Any
有两个直接子类型; AnyVal
(包括Java将视为“原语”的类型,例如Int
和Boolean
)和AnyRef
(例如java.lang.Object
)。
答案 1 :(得分:2)
Any
代表任何类型的对象,与C / C ++中的void *
大致相同。
Unit
代表没有对象,与C / C ++中的void
大致相同。
答案 2 :(得分:1)
在以下意义上都没有太多的语义含义:
Any
的值,除非我们在运行时进行强制转换,否则我们真的不知道它是什么类型的值Unit
,我们知道已经执行了副作用,但是我们对它的副作用种类并不十分了解。理想情况下,我们希望尽可能缩小程序的含义,因此,我们尝试使Any
和Unit
的使用最小化,同时使语义上更丰富的类型的使用最大化。
作为旁注,Any
是Scala类层次结构的根,这意味着Unit
也是Any
的子类型,例如,以下内容有效:{ {1}}。