Que fait «: =»?


111

J'ai vu :=utilisé dans plusieurs exemples de code, mais jamais avec une explication d'accompagnement. Il n'est pas exactement possible de rechercher son utilisation sur Google sans connaître le nom approprié.

Qu'est ce que ça fait?


11
Dans quelle langue?
Bêta

4
Vous l'utilisez normalement :=lorsque vous définissez quelque chose, pour le séparer des changements de variables normaux. De quel langage de programmation parlons-nous?
svens

3
PL / SQL c'est pour l'affectation. Mais étant donné une langue différente, cette réponse n'est pas garantie d'être vraie - alors dans quelles langues était l'exemple?
Andrew

12
Pour rechercher quelque chose comme ça sur Google,
épelez-le

3
Je pense que Pascal a cet opérateur!

Réponses:


104

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

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

Remarque: j'ai trouvé ceci en recherchantcolon equals operator


58
Ironiquement, cette réponse est maintenant au-dessus de Wikipedia lors de la recherche colon equals operator.
nighthawk454

6
Si nous continuons à taper colon equals operator, nous travaillons par magie sur le référencement de Google pour en faire le meilleur résultat
ATLUS

47

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 en dialecte C.

Historiquement, les articles d'informatique utilisés =pour les comparaisons d'égalité et pour les affectations. Pascal :=remplaçait la flèche gauche difficile à taper. C est allé dans une direction différente et a plutôt choisi les opérateurs =et ==.


25

Dans le langage à typage statique, Go := est l'initialisation et l'affectation en une seule étape. Il est fait pour permettre la création interprétée de variables dans un langage compilé.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

Il s'agit d'une ancienne syntaxe (pascal) pour l'opérateur d'affectation. Il serait utilisé comme ceci:

a := 45;

Il peut également être dans d'autres langues, probablement dans un usage similaire.


0

Dans de nombreux livres CS, il est utilisé comme opérateur d'affectation, pour se différencier de l'opérateur d'égalité =. Dans beaucoup de langues de haut niveau, cependant, l'affectation est =et l'égalité est ==.


0

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

En mathématiques, c'est comme égal, mais A: = B signifie que A est défini comme B, une triple barre égale peut être utilisée pour dire que c'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 juste que le plan égal et moins égal a été pris (ou potentiellement facilement confondu avec = <) et quelque chose de nouveau pour définir l'affectation était nécessaire et c'était le plus logique.

Références historiques: J'ai vu cela pour la première fois dans SmallTalk, le langage objet original, dont SJ d'Apple n'a copié que la partie Windows et BG de Microsoft édulcoré à partir d'eux (thread unique). Finalement, SJ in NeXT a pris la deuxième leçon la plus importante de Xerox PARC in, qui est devenue Objective C.

En tout cas, ils ont juste pris l'opérateur d'assiment deux-points égal à 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 conserver différentes valeurs à différents moments au cours de sa durée de vie et de sa portée. Cependant, certains langages (principalement strictement fonctionnels) ne permettent pas ce type de réaffectation «destructive», car cela pourrait impliquer des changements d'état non local. Le but est de renforcer la transparence référentielle, c'est-à-dire des fonctions qui ne dépendent pas de l'état de certaines variables, mais produisent les mêmes résultats pour un ensemble donné d'entrées paramétriques à tout moment.

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


0

Pour VB.net,

un constructeur (pour ce cas, Me = this en Java):

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

lorsque vous créez cet objet:

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

Ensuite, quel que soit l'ordre des paramètres, cet objet ABC a A = 2, B = 3, C = 1

Donc, oui, une très bonne pratique pour que les autres lisent efficacement votre code


-1

Deux points égaux ont été utilisés dans Algol et ses descendants tels que Pascal et Ada parce qu'il est aussi proche que l'ASCII obtient un symbole de flèche gauche.

L'étrange convention d'utiliser des égaux pour l'affectation et des doubles-égaux pour la comparaison a été lancée avec le langage C.

Dans Prolog, il n'y a pas de distinction entre l'affectation et le test d'égalité.


S'ils le voulaient près de la flèche gauche, ils auraient pu l'utiliser <-comme Haskell l'a fait. Ils n'essayaient pas de se rapprocher de la flèche gauche avec :=, ils utilisaient l'opérateur mathématique «est défini comme»: mathworld.wolfram.com/Defined.html
Variadicisme

1
Alerte pédante: <- dans Haskell n'est pas une affectation. Haskell n'a pas d'affectation destructive à la manière de Pascal, Ada etc. <- fait partie de la syntaxe do-notation pour la substitution de paramètres. Il est plus analogue au processus de substitution de valeurs en paramètres dans un appel de sous-programme.
Michael restaure Monica Cellio le

1
@Michael Assez bien. Vous avez raison. Ma faute. Quoi qu'il en soit, le fait est que s'ils essayaient d'imiter la flèche gauche, ils ne l'auraient pas utilisée :=, ils l'auraient utilisée <-.
Variadicism
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.