-=运算符在scala def上下文中是什么意思

-=运算符在scala def上下文中是什么意思,scala,Scala,我在Kafka源代码中发现了下面奇怪的def定义语法。谁能帮我理解这个语法,因为我在scala文档中找不到。第一个def定义有效,但第二个def定义无效 private def test_=(x: Int) { } private def test=(x: Int) { } 它不是接线员。有一个特殊的规则,如果您有一个名称以\u=结尾的方法和一个参数,以及一个名称相同但没有\u=的无参数方法(在本例中是def test=…),那么Scala将foo.test=.理解为fo

我在Kafka源代码中发现了下面奇怪的def定义语法。谁能帮我理解这个语法,因为我在scala文档中找不到。第一个def定义有效,但第二个def定义无效

  private def test_=(x: Int) {

  }

  private def test=(x: Int) {

  }

它不是接线员。有一个特殊的规则,如果您有一个名称以
\u=
结尾的方法和一个参数,以及一个名称相同但没有
\u=
的无参数方法(在本例中是
def test=…
),那么Scala将
foo.test=.
理解为
foo.test=(…)
呼叫。

它不是接线员。有一个特殊的规则,如果您有一个名称以
\u=
结尾的方法和一个参数,以及一个名称相同但没有
\u=
的无参数方法(在本例中是
def test=…
),那么Scala将
foo.test=.
理解为
foo.test=(…)
call.

您能提供到源代码的链接吗?(第64行)我只能找到
private def logEndOffset=(newLogEndOffset:LogOffsetMetadata)
和def
logEndOffset=if(isLocal)
,但没有找到类似于
logEndOffset=(newLogEndOffset:LogOffsetMetadata)if(isLocal)
,所以不清楚您是什么asking@dk14是的,你是对的,一开始它不在那里,当def test_=语法没有给出任何错误时,我只是想检查def test=是否也能工作,但它给出了错误,所以我想知道def上下文下=的重要性。您能提供到源代码的链接吗?(第64行)我只能找到
private def logEndOffset=(newLogEndOffset:LogOffsetMetadata)
和def
logEndOffset=if(isLocal)
,但没有找到类似于
logEndOffset=(newLogEndOffset:LogOffsetMetadata)if(isLocal)
,所以不清楚您是什么asking@dk14是的,你是对的,一开始它不在那里,当def test_=语法没有给出任何错误时,我只是想检查def test=是否也能工作,但它给出了错误,所以我想知道def context下=的意义。还有一条规则-Scala中的标识符可能包含特殊字符,但字母和特殊字符必须用下划线分隔,否则编译器会抱怨-这就是为什么
test=
是有效标识符而
test=
不是。还有一条规则-Scala中的标识符可能包含特殊字符,但字母和特殊字符必须用下划线分隔,否则编译器会抱怨-这正是
test=
是有效标识符而
test=
不是的原因。