在某些编程语言中,我看到(例如):
x := y
这个:=
运营商通常被称为什么,它做了什么?
答案 0 :(得分:14)
在支持运营商:=
的所有语言中,这意味着分配。
:=
的语言中,=
运算符通常表示相等比较。=
表示分配的语言中,==
通常用于相等比较。
:=
是=
是什么意思?
我无法回想起:=
与=
相同的任何语言。
在MySQL中:=
和=
都用于assignment,但它们不可互换,选择正确的取决于上下文。为了使问题更加混乱,=
运算符也用于comparison。将=
解释为赋值或比较也取决于上下文。
答案 1 :(得分:4)
我通常在伪代码中看到它更多,这意味着一项任务。因此x:= y表示'将x的值设置为y'的值,而x = y表示'x的值是否等于y的值?'
答案 2 :(得分:1)
许多语言使用常见运算符。通常,=
保留用于变量赋值,如果它是单独的,则不应在数学上下文中查看。虽然==
答案 3 :(得分:1)
PL / I(有?)=
和:=
。 =
用于赋值和比较 - 编译器会尝试根据上下文确定您的意思。当/如果它决定进行比较,你真正意味着分配,你可以使用:=
强制分配。
例如,考虑{C}中的x=y=0;
(例如)这意味着“将0分配给y,然后将结果(也是0)分配给x。”
在PL / I中,它意味着将y与0进行比较,然后将该比较的布尔结果分配给x(即,相当于C中的x = y == 0;
)。如果你(理智,不像PL / I的设计者)打算表示“将0分配给x和y”,你可以使用x = y := 0;
(或x := y := 0;
)。
答案 4 :(得分:1)
该符号称为“成为”,并随IAL(后来称为Algol 58)和Algol 60引入。它是用于将值分配给变量的符号。有人将x := y;
读为“ x变成y”。
使用“:=”而不是“ =”进行数学上的讲究;从这样的观点来看,“ x = x + 1”是没有意义的。其他当代语言可能使用左箭头进行分配,但这在许多字符集中并不常见(作为单个字符)。
Algol 68进一步区分识别和分配; INT the answer = 42;
说,“答案”被声明为等于42(即是一个常数值)。在INT the answer := 42;
中,“答案”被声明为变量,并且最初被赋值为42。
还有其他分配符号,例如+:=
,发音为正加; x +:= y
将y添加到x的当前值,并将结果存储在x中。
(空格没有意义,因此可以将其插入“标识符”中,而不必弄乱下划线)
答案 5 :(得分:1)
这是Python 3的一个新运算符,实际上在BDFL Guido van Rossum的提前退休中起作用。它允许赋值,同时还可以计算表达式:
env_base = os.environ.get("PYTHONUSERBASE", None)
if env_base:
return env_base
可以缩写为:
if env_base := os.environ.get("PYTHONUSERBASE", None):
return env_base
https://www.python.org/dev/peps/pep-0572/#examples-from-the-python-standard-library