什么是:=运营商?

时间:2012-05-01 23:38:09

标签: syntax programming-languages operator-keyword colon-equals

在某些编程语言中,我看到(例如):

x := y

这个:=运营商通常被称为什么,它做了什么?

6 个答案:

答案 0 :(得分:14)

在支持运营商:=的所有语言中,这意味着分配。

  • 在支持运算符:=的语言中,=运算符通常表示相等比较。
  • =表示分配的语言中,==通常用于相等比较。
  

:==是什么意思?

我无法回想起:==相同的任何语言。


在MySQL中:==都用于assignment,但它们不可互换,选择正确的取决于上下文。为了使问题更加混乱,=运算符也用于comparison。将=解释为赋值或比较也取决于上下文。

答案 1 :(得分:4)

我通常在伪代码中看到它更多,这意味着一项任务。因此x:= y表示'将x的值设置为y'的值,而x = y表示'x的值是否等于y的值?'

答案 2 :(得分:1)

许多语言使用常见运算符。通常,=保留用于变量赋值,如果它是单独的,则不应在数学上下文中查看。虽然==

测试了Java和Bash等某些语言的平等性

答案 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