这是一个特别不可谷歌的查询,但是当在一行中使用多个等号来定义函数时所代表的内容如下所示:
def x_=(x: Int): Unit = internal = x
答案 0 :(得分:3)
隔离的那一行是scala类中getter / setter模式的setter部分。完整示例可能如下所示:
class Foo {
private var internal: Int = 0
def x = internal
def x_=(x: Int): Unit = internal = x
}
def x
是私有变量internal
的获取者,而def x_(x: Int)
是设置者。结果是,通过句法糖的魔力,x
成员可以在作业的左侧使用,然后将internal
设置为右侧,如下所示:
val foo = new Foo()
foo.x = 15
println(foo.x) // 15
_=(x: Int)
调用赋值的语法糖,但它也可以像这样直接调用:
val foo = new Foo()
foo.x_=(15)
println(foo.x) // 15
正如您所看到的,前一个调用实际上只是后一个方法调用,下划线和括号中省略了括号。