“:=”有什么作用?


111

我见过:=在几个代码示例中使用过,但从未附带说明。谷歌在不知道其正确名称的情况下使用它是不可能的。

它有什么作用?


11
用什么语言?
Beta

4
通常,:=在定义某些内容时会使用它们,以将其与常规变量更改区分开。.我们在谈论哪种编程语言?
斯文斯2011年

3
PL / SQL是用于分配的。但是给定另一种语言,就不能保证该答案是正确的-那么示例使用哪种语言?
安德鲁

12
要在Google上搜索类似的内容,请将其拼写出来并用引号引起来,例如:“冒号等于”
Intelekshual 2011年

3
我认为Pascal有这个运算符!

Answers:


104

http://en.wikipedia.org/wiki/Equals_sign#In_computer_programming

在计算机编程语言中,等号通常表示布尔值运算符以测试值的相等性(例如,在Pascal或Eiffel中)(与数学中符号的用法一致),或者是赋值运算符(例如,在类似C的语言中) )。做出前一种选择的语言通常使用冒号(:=)或≔表示其赋值运算符。做出后一种选择的语言通常使用双等号(==)表示其布尔相等运算符。

注意:我是通过搜索找到的colon equals operator


58
具有讽刺意味的是,此搜索现在位于Wikipedia之上colon equals operator
nighthawk454

6
如果我们继续输入colon equals operator,我们会在Google的SEO上变魔术,以使其达到最佳效果
ATLUS

47

它是Pascal中的赋值运算符,通常用于证明和伪代码中。和...一样= C语言语言相同。

从历史上看,计算机科学论文用于=相等性比较和分配。Pascal曾经:=代表难于输入的左箭头。C朝另一个方向发展,而是决定了=and ==运算符。


25

在静态类型语言中,Go :=是一步的初始化和赋值。这样做是为了允许以编译语言进行类似解释的变量创建。

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

对于赋值运算符,这是旧的(pascal)语法。它的用法如下:

a := 45;

它也可能使用其他语言,可能使用类似。


0

在许多CS书籍中,它都用作赋值运算符,以区别于等价运算符=。但是,在许多高级语言中,赋值为=,相等为==


0

它就像一个箭头,没有使用小于号<=,所以就像每个人都已经说过“赋值”运算符一样。与等效的逻辑运算符相反,使设置的位置更清晰。

在数学中,它等于等式,但A:= B表示将A定义为B,可以用三杠等式来表示它在定义上相似且相等,但并不总是相同。

无论如何,我指的是这些其他参考,它们可能是发明它的人所想到的,但实际上只是平面等于而小于等于(或容易与= <混淆),并且需要一些新的方法来定义赋值,并且最有意义的。

历史参考资料:我首先在SmallTalk中看到了原始的对象语言,其中Apple的SJ仅复制了Windows的Windows部分,Microsoft的BG进一步复制了它们(单线程)。最终,NeXT中的SJ接受了施乐PARC的第二个更重要的课程,该课程成为了ObjectiveC。

好吧,无论如何,他们只是从1958年的ALGOL手中接过了结肠等值运算符,后来被Pascal推广了

https://zh.wikipedia.org/wiki/PARC_(公司)

https://zh.wikipedia.org/wiki/任务_(计算机科学)

赋值通常允许变量在其寿命和范围内的不同时间保存不同的值。但是,某些语言(主要是严格起作用的语言)不允许进行这种“破坏性”重新分配,因为这可能暗示着非本地状态的改变。目的是强制执行参照透明性,即不依赖某些变量状态的函数,但是在任何时间点对于给定的一组参数输入都产生相同的结果。

https://zh.wikipedia.org/wiki/Referential_transparency


0

对于VB.net,

构造函数(在这种情况下,Me = Java中的this):

Public ABC(int A, int B, int C){
Me.A = A;
Me.B = B;
Me.C = C;
}

创建该对象时:

new ABC(C:=1, A:=2, B:=3)

然后,不管参数的顺序如何,该ABC对象的A = 2,B = 3,C = 1

因此,非常好的做法是让他人有效地阅读您的代码


-1

在Algol及其后代(例如Pascal和Ada)中使用了冒号等式,因为它与ASCII到左箭头符号的距离非常近。

使用等号进行赋值和使用双等号进行比较的奇怪约定始于C语言。

在Prolog中,赋值和相等性测试之间没有区别。


如果他们希望它靠近左箭头,则可以<-像Haskell那样使用。他们并没有尝试使用来接近左箭头:=,而是使用了数学“被定义为”运算符:mathworld.wolfram.com/Defined.html
Variadicism

1
脚尖警报:Haskell中的<-未分配。Haskell没有以Pascal,Ada等方式进行破坏性分配。<-是用于参数替换的do-notation语法的一部分。它更类似于在子例程调用中将值替换为参数的过程。
迈克尔还原莫妮卡·塞里奥(Monica Cellio)'16

1
@迈克尔·费尔足够。你是对的。我的错。无论如何,重点仍然是,如果他们试图模仿左箭头,他们将不会使用:=,他们将会使用<-
变异主义
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.