Was macht ": ="?

111

Ich habe :=in mehreren Codebeispielen gesehen, aber nie mit einer begleitenden Erklärung. Es ist nicht genau möglich, seine Verwendung zu googeln, ohne den richtigen Namen dafür zu kennen.

Was tut es?

Zyklon
quelle
11
In welcher Sprache?
Beta
4
Normalerweise verwenden :=Sie, wenn Sie etwas definieren, um es von regulären Variablenänderungen zu trennen. Über welche Programmiersprache sprechen wir?
Svens
3
PL / SQL ist für die Zuweisung. Bei einer anderen Sprache ist diese Antwort jedoch nicht garantiert - also in welchen Sprachen war das Beispiel?
Andrew
12
Um so etwas zu googeln, buchstabieren Sie es und setzen Sie es in Anführungszeichen wie
folgt
3
Ich denke, Pascal hat diesen Operator!

Antworten:

104

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

In Computerprogrammiersprachen bezeichnet das Gleichheitszeichen normalerweise entweder einen booleschen Operator zum Testen der Gleichheit von Werten (z. B. in Pascal oder Eiffel), der mit der Verwendung des Symbols in der Mathematik übereinstimmt, oder einen Zuweisungsoperator (z. B. in C-ähnlichen Sprachen) ). Sprachen, die die erstere Wahl treffen, verwenden häufig einen Doppelpunkt (: =) oder ≔, um ihren Zuweisungsoperator zu bezeichnen. Sprachen, die die letztere Wahl treffen, verwenden häufig ein doppeltes Gleichheitszeichen (==), um ihren booleschen Gleichheitsoperator zu bezeichnen.

Hinweis: Ich habe dies bei der Suche nach gefundencolon equals operator

schuften
quelle
58
Ironischerweise steht diese Antwort jetzt bei der Suche über Wikipedia colon equals operator.
Nighthawk454
6
Wenn wir weiter tippen colon equals operator, arbeiten wir magisch an Googles SEO, um dies zum Top-Ergebnis zu machen
ATLUS
47

Es ist der Zuweisungsoperator in Pascal und wird häufig in Proofs und Pseudocode verwendet. Es ist dasselbe wie =in C-Dialektsprachen.

Historisch gesehen wurden Informatikpapiere =für Gleichstellungsvergleiche und für Aufgaben verwendet. Pascal :=stand für den schwer zu tippenden Pfeil nach links. C ging eine andere Richtung und entschied sich stattdessen für die =und ==Betreiber.

John Kugelman
quelle
25

In der statisch typisierten Sprache ist Go := die Initialisierung und Zuweisung in einem Schritt. Dies geschieht, um eine interpretierte Erstellung von Variablen in einer kompilierten Sprache zu ermöglichen.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42
Matias Forbord
quelle
5

Einige Sprachen :=dienen als Zuweisungsoperator.

Mike Lewis
quelle
@Pacerier In diesem Beitrag über stackoverflow.com/questions/7462322/… erfahren Sie , warum die Antwort auf Ihre Frage sowohl "Ja" als auch "Nein" sein kann.
TigOldBitties
@TigOldBitties, Good Gotcha von Erwin da unten.
Pacerier
0

Dies ist eine alte (Pascal-) Syntax für den Zuweisungsoperator. Es würde so verwendet werden:

a := 45;

Es kann auch in anderen Sprachen sein, wahrscheinlich in einer ähnlichen Verwendung.

mklauber
quelle
0

In vielen CS-Büchern wird es als Zuweisungsoperator verwendet, um sich vom Gleichheitsoperator zu unterscheiden =. In vielen Hochsprachen ist Zuordnung jedoch =und Gleichheit ist ==.

Gailbear
quelle
0

Es ist wie ein Pfeil ohne ein kleineres Symbol <=, also wie jeder bereits den Operator "Zuweisung" gesagt hat. Bringen Sie Klarheit in das, was wo eingestellt wird, im Gegensatz zum logischen Operator der Äquivalenz.

In der Mathematik ist es wie gleich, aber A: = B bedeutet, dass A als B definiert ist. Ein dreifacher Balken gleich kann verwendet werden, um zu sagen, dass es per Definition ähnlich und gleich ist, aber nicht immer dasselbe.

Wie auch immer, ich verweise auf diese anderen Referenzen, die wahrscheinlich in den Köpfen derjenigen waren, die sie erfunden haben, aber es ist wirklich nur so, dass Ebene gleich und weniger gleich ist (oder möglicherweise leicht mit = <verwechselt werden kann) und etwas Neues zur Definition der Zuordnung benötigt wurde und das machte am meisten Sinn.

Historische Referenzen: Ich habe dies zum ersten Mal in SmallTalk gesehen, der ursprünglichen Objektsprache, von der SJ von Apple nur den Windows-Teil von kopierte und BG von Microsoft weiter verwässerte (Single-Threaded). Schließlich nahm SJ in NeXT die zweite wichtigere Lektion von Xerox PARC in, die zu Ziel C wurde.

Na ja, sie haben einfach nur den Assiment-Operator von ALGOL 1958 genommen, der später von Pascal populär gemacht wurde

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

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

Zuweisungen ermöglichen es einer Variablen normalerweise, unterschiedliche Werte zu unterschiedlichen Zeiten während ihrer Lebensdauer und ihres Umfangs zu speichern. Einige Sprachen (hauptsächlich streng funktional) erlauben jedoch keine solche "destruktive" Neuzuweisung, da dies Änderungen des nicht-lokalen Zustands implizieren könnte. Der Zweck besteht darin, referenzielle Transparenz zu erzwingen, dh Funktionen, die nicht vom Status einiger Variablen abhängen, sondern zu jedem Zeitpunkt die gleichen Ergebnisse für einen bestimmten Satz parametrischer Eingaben liefern.

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

Meister James
quelle
0

Für VB.net

ein Konstruktor (für diesen Fall Me = this in Java):

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

Wenn Sie dieses Objekt erstellen:

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

Dann hat dieses ABC-Objekt unabhängig von der Reihenfolge der Parameter A = 2, B = 3, C = 1

Also, ya, sehr gute Praxis für andere, um Ihren Code effektiv zu lesen

In der Nähe von
quelle
-1

Colon-equals wurde in Algol und seinen Nachkommen wie Pascal und Ada verwendet, da es so nah wie ASCII an einem Linkspfeilsymbol liegt.

Die seltsame Konvention, Gleichheit für die Zuweisung und Doppelgleichheit zum Vergleich zu verwenden, wurde mit der Sprache C begonnen.

In Prolog gibt es keinen Unterschied zwischen Zuordnung und Gleichheitstest.

Michael restauriert Monica Cellio
quelle
Wenn sie es in der Nähe des linken Pfeils haben wollten, hätten sie es <-wie Haskell verwenden können. Sie versuchten nicht, sich dem linken Pfeil zu nähern:= , sondern verwendeten den mathematischen Operator 'ist definiert als': mathworld.wolfram.com/Defined.html
Variadicism
1
Pedantenalarm: <- in Haskell ist keine Zuordnung. Haskell hat keine destruktive Zuordnung in Bezug auf Pascal, Ada usw. <- ist Teil der Do-Notationssyntax für die Parametersubstitution. Es ist analoger zum Ersetzen von Werten durch Parameter in einem Unterprogrammaufruf.
Michael stellt Monica Cellio am
1
@ Michael Fair genug. Du hast recht. Mein Fehler. Wie auch immer, der Punkt bleibt, dass sie, wenn sie versucht hätten, den linken Pfeil nachzuahmen, nicht benutzt hätten :=, sie hätten benutzt <-.
Variadicism