假设我有一个接受一个参数的函数。
def weird(nothing: Unit): Unit = {
println(nothing)
}
weird("Print me!")
当我将字符串传递给函数时,它会打印
()
。为什么会这样?为什么
Unit
与 String
相同? 最佳答案
提供单位值,“丢弃”您的字符串值。
scala> ("hi": Unit)
<console>:11: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
("hi": Unit)
^
scala> :replay -Ywarn-value-discard
Replaying: ("hi": Unit)
<console>:11: warning: discarded non-Unit value
("hi": Unit)
^
<console>:11: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
("hi": Unit)
^
请参阅转换 in the spec 。
这只是使您的表达式适应预期类型的一种方式。
通常,它看起来像:
def f: Unit = 42 // add () here
你的电话实际上是
weird { "string" ; () }
关于Scala:为什么我的函数不能打印字符串参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33137188/