Что делает ": ="? - PullRequest
       69

Что делает ": ="?

102 голосов
/ 17 марта 2011

Я видел :=, использованный в нескольких примерах кода, но никогда с сопроводительным объяснением. Невозможно гуглить его использование, не зная его правильного имени.

Что это делает?

Ответы [ 9 ]

97 голосов
/ 17 марта 2011

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

В языках программирования компьютеров знак равенства обычно обозначает либо логический оператор для проверки равенства значений (например, в Паскале или Эйфелевой), что согласуется с использованием символав математике, или оператор присваивания (например, как в C-подобных языках).Языки, делающие первый выбор, часто используют двоеточие (=) или ≔ для обозначения своего оператора присваивания.Языки с последним выбором часто используют двойной знак равенства (==) для обозначения своего оператора булева равенства.

Примечание: Я нашел это, выполнив поиск colon equals operator

44 голосов
/ 17 марта 2011

Это оператор присваивания в Pascal и часто используется в доказательствах и псевдокоде. Это то же самое, что и = в языках диалекта Си.

Исторически, статьи по информатике использовали = для сравнений на равенство и для заданий. Паскаль использовал := для обозначения трудно набираемой левой стрелки. С пошел в другом направлении и вместо этого определился с операторами = и ==.

24 голосов
/ 19 января 2014

На статически типизированном языке Go := - это инициализация и назначение за один шаг. Это сделано для обеспечения интерпретируемого создания переменных в скомпилированном языке.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42
4 голосов
/ 28 марта 2016

Другая интерпретация извне мира языков программирования происходит от Wolfram Mathworld и др.:

Если A и B равны по определению (т. Е. A определяется как B), то это символически записывается как A = B, A: = B или иногда A≜B.

http://mathworld.wolfram.com/Defined.html

https://math.stackexchange.com/questions/182101/appropriate-notation-equiv-versus

4 голосов
/ 17 марта 2011

Некоторые языки используют := в качестве оператора присваивания.

0 голосов
/ 03 июня 2018

Это как стрелка без использования символа «меньше» <=, так как все уже сказали оператор «присваивания».Принесение ясности в то, что задается где, в отличие от логического оператора эквивалентности. </p>

В математике это похоже на равно, но A: = B означает, что A определяется как B, тройной столбец, равный, может использоваться дляскажем, это похоже и равно по определению, но не всегда одно и то же.

Во всяком случае, я указываю на эти другие ссылки, которые, вероятно, были в умах тех, кто изобрел его, но на самом деле это просто тот уровень, равный и меньше равныйбыли взяты (или потенциально легко путаются с = <), и нужно было что-то новое для определения назначения, и это имело смысл. </p>

Исторические справки: я впервые увидел это в SmallTalk, исходном объектном языке, из которого SJApple только скопировала часть Windows, а BG Microsoft отошла от них дальше (однопоточная).В конце концов, SJ в NeXT взял второй, более важный урок от Xerox PARC, который стал Objective C.

Ну, в любом случае, они просто взяли оператора сравнения двоеточия из ALGOL 1958, который позже был популяризирован Паскалем

https://en.wikipedia.org/wiki/PARC_(company)

https://en.wikipedia.org/wiki/Assignment_(computer_science)

Назначения обычно позволяют переменной содержать разные значения в разное время в течение срока ее службы и области действия.Однако некоторые языки (в первую очередь строго функциональные) не допускают такого «разрушительного» переназначения, поскольку это может подразумевать изменения нелокального состояния.Цель состоит в том, чтобы обеспечить ссылочную прозрачность, то есть функции, которые не зависят от состояния некоторой переменной (переменных), но дают те же результаты для данного набора параметрических входов в любой момент времени.

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

0 голосов
/ 15 февраля 2016

Двоеточие использовалось в Алголе и его потомках, таких как Паскаль и Ада, потому что оно так близко, как ASCII достигает символа стрелки влево.

Странное соглашение об использовании равных для присваивания и двойных равных для сравнения было начато с языка Си.

В Прологе нет различия между заданием и тестом на равенство.

0 голосов
/ 17 марта 2011

Во многих книгах по CS он используется как оператор присваивания, чтобы отличаться от оператора равенства =. Однако во многих языках высокого уровня назначение равно =, а равенство равно ==.

0 голосов
/ 17 марта 2011

Это старый (паскаль) синтаксис для оператора присваивания.Это можно использовать так:

a := 45;

Это может быть и на других языках, возможно, в аналогичном использовании.

...