如果我从下面删除括号以阅读printFn hc
,我会收到错误消息。我在Scala中认为一个参数函数不需要parens?
case class HelloClass(arg1:String)
object HelloWorld extends App {
var hc = HelloClass("Hello World")
printFn(hc)
def printFn(a1:HelloClass) : Unit = {
println(a1 arg1) /* or a1.arg1 */
}
}
答案 0 :(得分:4)
我认为你把它与infix method notation混在一起了。在Scala中,您可以编写obj.method(argument)
或obj method argument
。
要将此应用于您的示例,您需要" obj
"表达式的一部分,所以如果你想避免括号,你可以写
this printFn hc
答案 1 :(得分:1)
我想补充一些关于 postfix 的内容,作为关于 infix 的另一个答案。来自Programming Scala
因此,1 + 2与1。+(2)相同,因为“中缀”符号在哪里 我们可以删除单参数方法的句点和括号 类似地,可以在没有参数的情况下调用不带参数的方法 期。这称为“后缀”表示法。但是,使用这个 后缀约定有时会令人困惑,所以Scala 2.10就可以了 一个可选功能。
后缀示例
1 toString
中缀的例子
private def testMethod(arg1: String): String = {
arg1
}
//this specifies current instance
println(this testMethod "Hello Scala")