web-dev-qa-db-fra.com

Que fait ": ="?

J'ai vu := utilisé dans plusieurs exemples de code, mais jamais avec une explication correspondante. Il n'est pas tout à fait possible de google son utilisation sans en connaître le nom.

Qu'est ce que ça fait?

97
Cyclone

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

Dans les langages de programmation informatique, le signe égal désigne généralement un opérateur booléen pour tester l’égalité des valeurs (par exemple, en Pascal ou Eiffel), ce qui est cohérent avec l’utilisation du symbole en mathématiques, ou un opérateur d’affectation (par exemple, en langage C ). Les langues faisant le premier choix utilisent souvent un signe égal à deux points (: =) ou pour désigner leur opérateur d’affectation. Les langues faisant ce dernier choix utilisent souvent un signe double égal (==) pour désigner leur opérateur d'égalité booléenne.

Note: J'ai trouvé ceci en cherchant colon equals operator

93
drudge

C'est l'opérateur d'affectation en Pascal et est souvent utilisé dans les preuves et le pseudo-code. C'est la même chose que = dans les langues C-dialectes.

Historiquement, les documents informatiques utilisaient = pour les comparaisons d’égalité et pour les travaux. Pascal a utilisé := pour remplacer la flèche gauche difficile à saisir. C est allé dans une direction différente et a opté pour les opérateurs = et ==.

43
John Kugelman

Dans le langage statiquement typé Go:= est l’initialisation et l’affectation en une étape. Ceci est fait pour permettre la création de variables interprétées dans un langage compilé.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42
22
Matias Forbord

Une autre interprétation hors du monde des langages de programmation vient de Wolfram Mathworld, et al:

Si A et B sont égaux par définition (c’est-à-dire que A est défini par B), cela est écrit symboliquement par A = B, A: = B ou parfois A≜B.

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

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

4
RBV

Certaines langues utilisent := pour agir en tant qu'opérateur d'affectation.

4
Mike Lewis

C'est comme une flèche sans utiliser un symbole inférieur à <= donc comme tout le monde a déjà dit l'opérateur "affectation". Clarifier ce qui est défini sur où par opposition à l'opérateur logique de l'équivalence.

En mathématiques, c'est comme des égaux, mais A: = B signifie que A est défini comme B, un triple trait égal peut être utilisé pour dire qu'il est similaire et égal par définition, mais pas toujours la même chose.

Quoi qu’il en soit, je signale ces autres références qui étaient probablement dans l’esprit de ceux qui l’ont inventé, mais c’est vraiment ce plan qui est égal et moins qui a été pris (ou potentiellement facilement confondu avec = <) et il fallait quelque chose de nouveau pour définir l’affectation et cela avait le plus de sens.

Références historiques: J'ai d'abord vu cela dans Smalltalk, le langage objet d'origine, dont SJ d'Apple n'a copié que la partie Windows de BG et Microsoft allégé plus loin (single threaded). Finalement, SJ dans NeXT a tiré la deuxième leçon plus importante de Xerox PARC, qui est devenue l’objectif C.

Quoi qu’il en soit, ils viennent de prendre l’opérateur d’assemblage points-égaux d’ALGOL 1958, qui a ensuite été popularisé par Pascal.

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

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

Les affectations permettent généralement à une variable de contenir différentes valeurs à différents moments au cours de sa durée de vie et sa portée. Cependant, certains les langues (essentiellement strictement fonctionnelles) ne permettent pas ce genre de réaffectation "destructive", car elle pourrait impliquer des changements de non-locale Etat. Le but est d’appliquer la transparence référentielle, c’est-à-dire les fonctions qui ne dépendent pas de l’état de certaines variables, mais produisent le mêmes résultats pour un ensemble donné d'entrées paramétriques à n'importe quel moment de temps.

https://en.wikipedia.org/wiki/transparency_référentiel

0
Master James

C'est l'ancienne syntaxe (Pascal) de l'opérateur d'affectation. Il serait utilisé comme suit:

a := 45;

Cela peut être aussi dans d’autres langues, probablement dans un usage similaire.

0
mklauber

Dans beaucoup de livres CS, il est utilisé en tant qu'opérateur d'affectation pour différencier l'opérateur d'égalité =. Dans beaucoup de langages de haut niveau, cependant, l'attribution est = et l'égalité est ==.

0
gailbear