Scala附加括号打印输出
我编写了第一个示例scala程序,它如下所示:Scala附加括号打印输出,scala,function,println,Scala,Function,Println,我编写了第一个示例scala程序,它如下所示: def main(args: Array[String]) { def f1 = println("aprintln") println("applying f1") println((f1 _).apply) println("done applying f1") } 输出是 applying f1 aprintln () done applying f1 有人能解释为什么会出现额外的()吗?我以为只
def main(args: Array[String]) {
def f1 = println("aprintln")
println("applying f1")
println((f1 _).apply)
println("done applying f1")
}
输出是
applying f1
aprintln
()
done applying f1
有人能解释为什么会出现额外的()吗?我以为只有aprintln会出现
谢谢
Jeff在Java中具有void返回类型的方法在Scala中具有Unit返回类型。()是如何写出单位的值
在代码中,f1直接调用println。因此,当您调用f1并将其结果传递给println时,您可以在f1的主体中打印一个字符串,并打印其结果,该结果将字符串化为()。在Java中为void返回类型的方法在Scala中为Unit返回类型。()是如何写出单位的值
在代码中,f1直接调用println。因此,当您调用f1并将其结果传递给println时,您可以在f1的主体中打印一个字符串,并打印其结果,该结果将字符串化为()。这将解决问题:
def main(args: Array[String]) {
def f1 = println("aprintln")
println("applying f1")
(f1 _).apply
println("done applying f1")
}
这也将:
def main(args: Array[String]) {
def f1 = "aprintln"
println("applying f1")
println((f1 _).apply)
println("done applying f1")
}
这里的情况是,您正在执行函数f1
,调用apply
。函数f1
打印出'aprintln',并返回()
。然后将f1
的输出(即()
)传递给另一个对println
的调用。这就是为什么你会在控制台上看到一对额外的Paran
空括号在Scala中具有类型单位,这相当于Java中的void。这将解决问题:
def main(args: Array[String]) {
def f1 = println("aprintln")
println("applying f1")
(f1 _).apply
println("done applying f1")
}
这也将:
def main(args: Array[String]) {
def f1 = "aprintln"
println("applying f1")
println((f1 _).apply)
println("done applying f1")
}
这里的情况是,您正在执行函数f1
,调用apply
。函数f1
打印出'aprintln',并返回()
。然后将f1
的输出(即()
)传递给另一个对println
的调用。这就是为什么你会在控制台上看到一对额外的Paran
空括号中的类型单位在Scala中,相当于Java中的void。啊,是的,我真傻。我没有想到这一点,因为Java编译器不允许我这么做。谢谢。啊,是的,我真傻。我没有想到这一点,因为Java编译器不允许我这么做。谢谢。这是有道理的,并且与另一个答案是一致的。谢谢。这是有道理的,并且与另一个答案是一致的。非常感谢。