题
我最近开始使用Scala(2.8)玩,并注意到我可以编写以下代码(在Scala解释器中):
scala> var x : Unit = 10
x : Unit = ()
目前发生了什么事。我真的没想到会看到任何隐含的转换 单元.
解决方案
请参阅部分 “ 6.26.1价值转换” 在里面 Scala语言规范 版本2.8:
...
丢弃价值。 如果 e
具有某种值类型,预期类型是单位, e
通过嵌入期将其转换为预期类型 { e; () }
.
...
其他提示
任何东西都可以转换为单位。这是支持副作用方法的主要必要条件,这些方法仍然返回值,但通常会忽略返回值。例如
import java.util.{List =>JList}
def remove2[A](foo: JList[A], a1:A, a2:A):Unit = {
foo.remove(a1)
foo.remove(a2) //if you couldn't convert the (usually pointless) return value of remove to Unit, this wouldn't type
}
好吧,任何东西都可以转换为单位(这是其目的)。您可以将单位视为(sub)类型的晶格中的单位,这意味着它是所有事物的超级模式。看 维基百科文章.
不隶属于 StackOverflow