Syntax 什么是:=运算符?
在某些编程语言中,我看到(例如):Syntax 什么是:=运算符?,syntax,programming-languages,operator-keyword,colon-equals,Syntax,Programming Languages,Operator Keyword,Colon Equals,在某些编程语言中,我看到(例如): 这个操作符通常被称为什么?它做什么?在所有支持操作符的语言中:=它意味着赋值 在支持运算符:=的语言中,=运算符通常表示相等比较 在=表示赋值的语言中,=通常用于相等比较 :=的意思是= 我想不起有哪种语言的:=与=意思相同 在MySQL中,:=和=都用于,但是它们不能互换,选择正确的一个取决于上下文。为了使事情更加混乱,=操作符也用于。将=解释为赋值或比较也取决于上下文。我通常更多地在伪代码中看到它,它意味着赋值。因此,x:=y表示“将x的值设置为y的
这个操作符通常被称为什么?它做什么?在所有支持操作符的语言中
:=
它意味着赋值
- 在支持运算符
的语言中,:=
运算符通常表示相等比较=
- 在
表示赋值的语言中,=
通常用于相等比较=
:=
的意思是=
我想不起有哪种语言的:=
与=
意思相同
在MySQL中,
:=
和=
都用于,但是它们不能互换,选择正确的一个取决于上下文。为了使事情更加混乱,=
操作符也用于。将=
解释为赋值或比较也取决于上下文。我通常更多地在伪代码中看到它,它意味着赋值。因此,x:=y表示“将x的值设置为y的值”,而x=y表示“x的值是否等于y的值?”许多语言使用公共运算符。通常,=
是为变量赋值保留的,如果它是单独的,则不应在数学上下文中查看。虽然PL/I已经(had?)测试了Java和Bash等语言中的平等性,但是==
PL/I已经(had?)测试了=
和:=
<代码>=用于赋值和比较——编译器试图根据上下文找出您的意思。当/如果它决定在您真正想要分配的地方进行比较,您可以使用:=
强制分配
例如,考虑<代码> x= y=0;<代码>在C中(例如),这意味着“将0分配给y,然后将结果(也是0)分配给x。”
在PL/I中,它意味着将y与0进行比较,然后将该比较的布尔结果赋给x(即,相当于x=y==0;
,类似于C)。如果你(头脑清醒,不像PL/I的设计者)打算将0分配给x和y,你会使用x=y:=0代码>(或x:=y:=0;
)。该符号称为“变成”,并由IAL(后来称为Algol 58)和Algol 60引入。它是为变量赋值的符号。一个读取x:=y编码>为“x变为y”
使用“:=”而不是“=”进行赋值是数学上的挑剔;对于这样的观点,“x=x+1”是荒谬的。其他当代语言可能使用左箭头进行赋值,但这在许多字符集中并不常见(作为单个字符)
Algol 68进一步区分识别和赋值<代码>整数答案=42
表示“答案”被声明为等同于42(即,是一个常量值)。在INT中,答案:=42代码>“答案”被声明为一个变量,最初被赋值为42
还有其他赋值符号,如+:=
,发音为加号和变号x+:=y
将y添加到x的当前值,并将结果存储在x中
(空格没有任何意义,因此可以“插入”标识符,而不必使用下划线)这是Python 3.8中的一个新操作符,实际上在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
Pascal和Modula-2都是由Wirth设计的,使用“:=”作为赋值运算符。Algol使用:=
进行赋值。在Algol:Pascal、Modula-2等语言的后代中,这种情况往往会继续。GoLang:=允许您为变量赋值,并假设新变量继承赋值所隐含的类型。在R:=中,有时由包中的特定于域的语言使用。例如,在tidyverse和data.table内进行分配(通常在数据帧环境中,以及由于某些原因使用=进行分配不合适的情况下)。链接:和。您遗漏了::=。出现在语言语法中,表示“被定义为等于”。
if env_base := os.environ.get("PYTHONUSERBASE", None):
return env_base