最初我们有 colon-equals 用于赋值 - 就像在Pascal,Modula和Ada中一样 - 并且单个等号表示相等 . 许多编程理论家会认为这是正确的方法 . 赋值不是相等的,因此您应该使用不同的符号进行赋值 . 但后来我尝试了一些来自Java的人 . 我得到的反应是,“嗯,这看起来像是一种有趣的语言 . 但你为什么要写 colon-equals ?这是什么?" And I explained that its like that in Pascal. They said, "现在我明白了,但我完全不为人知,人们可以习惯这两种方法 . 因此,当我们确实想要有所作为的其他地方时,我们决定不在这些小事情上对抗惯例 .
4 回答
scala中的
=
是实际的赋值运算符 - 它执行了一些特定的事情,大多数情况下你无法控制,例如在创建时给出
val
或var
值更改
var
的值更改类上字段的值
制作类型别名
可能是其他人
:=
不是内置的操作符 - 任何人都可以重载它并将其定义为他们喜欢的任何内容 . 人们喜欢使用:=
的原因是它看起来非常具有任务性,并且在其他语言中用作赋值运算符 .所以,如果你想找出
:=
在你正在使用的特定库中意味着什么...我的建议是通过Scaladocs(如果它们存在)来查找名为:=
的方法 .来自Martin Odersky:
来自The Goals of Scala's Design
=
执行任务 .:=
未在标准库或语言规范中定义 . 如果您愿意,这是一个可供其他库或您的代码免费使用的名称 .Scala允许运算符重载,您可以像编写方法一样定义运算符的行为 .
与其他语言一样,
=
是赋值运算符 .我不知道名为
:=
的标准运算符,但可以使用此名称定义一个 . 如果您看到这样的运营商,您应该查看您正在查看的任何文档,或者搜索该运营商的定义位置 .您可以使用Scala运算符进行a lot . 实际上,您可以使用您喜欢的任何字符来创建操作符 .