Cosa fa ": ="?


111

Ho visto :=utilizzato in diversi esempi di codice, ma mai con una spiegazione di accompagnamento. Non è esattamente possibile google il suo utilizzo senza conoscerne il nome corretto.

Che cosa fa?


11
In che lingua?
Beta

4
Normalmente si usa :=quando si definisce qualcosa, per separarlo dai normali cambiamenti di variabili .. Di quale linguaggio di programmazione stiamo parlando?
svens

3
PL / SQL è per l'assegnazione. Ma data una lingua diversa, non è garantito che quella risposta sia vera, quindi in quali lingue è stato l'esempio?
Andrew

12
Per cercare qualcosa di simile su Google,
scrivi per esteso

3
Penso che Pascal abbia questo operatore!

Risposte:


104

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

Nei linguaggi di programmazione per computer, il segno di uguale denota tipicamente un operatore booleano per testare l'uguaglianza dei valori (ad esempio come in Pascal o Eiffel), che è coerente con l'uso del simbolo in matematica, o un operatore di assegnazione (ad esempio come nei linguaggi C-like ). Le lingue che fanno la prima scelta spesso usano i due punti uguali (: =) o ≔ per denotare il loro operatore di assegnazione. Le lingue che fanno quest'ultima scelta spesso usano un doppio segno di uguale (==) per denotare il loro operatore booleano di uguaglianza.

Nota: l' ho trovato cercandocolon equals operator


58
Ironia della sorte, questa risposta è ora sopra Wikipedia durante la ricerca colon equals operator.
nighthawk454

6
Se continuiamo a digitare colon equals operator, lavoriamo magicamente sul SEO di Google per renderlo il risultato migliore
ATLUS

47

È l' operatore di assegnazione in Pascal ed è spesso usato nelle prove e nello pseudo codice. È la stessa cosa che =nelle lingue dialettali C.

Storicamente, documenti di informatica utilizzati =per confronti di uguaglianza e per incarichi. Pascal era solito :=sostituire la freccia sinistra difficile da digitare. C ha preso una direzione diversa e invece ha deciso gli operatori =e ==.


25

Nel linguaggio digitato staticamente, Go := è inizializzazione e assegnazione in un unico passaggio. Viene fatto per consentire la creazione di variabili simili a quelle interpretate in un linguaggio compilato.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42



0

Questa è la vecchia sintassi (pascal) per l'operatore di assegnazione. Sarebbe usato così:

a := 45;

Potrebbe essere anche in altre lingue, probabilmente con un uso simile.


0

In molti libri di CS, viene utilizzato come operatore di assegnazione, per differenziarsi dall'operatore di uguaglianza =. In molte lingue di alto livello, tuttavia, l'assegnazione è =e l'uguaglianza è ==.


0

È come una freccia senza usare un simbolo minore di <= così come tutti hanno già detto operatore "assegnazione". Portare chiarezza su ciò che viene impostato su dove in contrapposizione all'operatore logico di equivalenza.

In matematica è come uguale ma A: = B significa che A è definito come B, una barra tripla uguale può essere usata per dire che è simile e uguale per definizione ma non sempre la stessa cosa.

Ad ogni modo, indico questi altri riferimenti che probabilmente erano nella mente di coloro che l'hanno inventato, ma in realtà è solo che l'aereo è uguale e meno che è stato preso uguale (o potenzialmente facilmente confuso con = <) e c'era bisogno di qualcosa di nuovo per definire l'assegnazione e quello aveva più senso.

Riferimenti storici: l'ho visto per la prima volta in SmallTalk l'originale Object Language, di cui SJ di Apple ha copiato solo la parte di Windows e BG di Microsoft ha ulteriormente annacquato da loro (single threaded). Alla fine SJ in NeXT ha preso la seconda lezione più importante da Xerox PARC in, che è diventata Obiettivo C.

Comunque, hanno semplicemente preso l'operatore di assimilazione di due punti uguali da ALGOL 1958 che è stato poi reso popolare da Pascal

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

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

Le assegnazioni in genere consentono a una variabile di mantenere valori diversi in momenti diversi durante la sua durata e il suo ambito. Tuttavia, alcune lingue (principalmente strettamente funzionali) non consentono quel tipo di riassegnazione "distruttiva", poiché potrebbe implicare cambiamenti di stato non locale. Lo scopo è imporre la trasparenza referenziale, cioè funzioni che non dipendono dallo stato di alcune variabili, ma producono gli stessi risultati per un dato insieme di input parametrici in qualsiasi momento.

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


0

Per VB.net,

un costruttore (per questo caso, Me = this in Java):

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

quando crei quell'oggetto:

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

Quindi, indipendentemente dall'ordine dei parametri, quell'oggetto ABC ha A = 2, B = 3, C = 1

Quindi, sì, un'ottima pratica per gli altri per leggere il tuo codice in modo efficace


-1

Il due punti uguale è stato utilizzato in Algol e nei suoi discendenti come Pascal e Ada perché è il più vicino possibile a ASCII con un simbolo di freccia sinistra.

La strana convenzione di usare uguale per l'assegnazione e doppio uguale per il confronto è stata avviata con il linguaggio C.

In Prolog, non c'è distinzione tra assegnazione e test di uguaglianza.


Se l'avessero voluto vicino alla freccia sinistra, avrebbero potuto usarlo <-come ha fatto Haskell. Non stavano cercando di avvicinarsi alla freccia sinistra con :=, stavano usando l'operatore matematico "è definito come": mathworld.wolfram.com/Defined.html
Variadicismo

1
Avviso pedante: <- in Haskell non è compito. Haskell non ha assegnazioni distruttive come Pascal, Ada ecc. <- fa parte della sintassi della notazione per la sostituzione dei parametri. È più analogo al processo di sostituzione dei valori nei parametri in una chiamata di subroutine.
Michael ripristina Monica Cellio il

1
@ Michael abbastanza giusto. Hai ragione. Colpa mia. Comunque, resta il punto che se avessero cercato di imitare la freccia sinistra, non l'avrebbero usata :=, l'avrebbero usata <-.
Variadismo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.