Co robi":="?

Widziałem := używane w kilku próbkach kodu, ale nigdy z towarzyszącym wyjaśnieniem. Nie jest możliwe wygooglowanie jego użycia bez znajomości właściwej nazwy.

Co to robi?
 92
Author: Péter Török, 2011-03-17

9 answers

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

W językach programowania znak równości zazwyczaj oznacza operator boolowski do testowania równości wartości (np. jak w Pascalu lub Eiffel), który jest zgodny z użyciem symbolu w matematyce, lub operator przypisania (np. jak w językach C). Języki dokonujące pierwszego wyboru często używają dwukropka-equals (:=) lub ≔, aby określić swój operator przypisania. Języki tworzące ostatni wybór często używa znaku równości podwójnej ( = = ), aby określić swój boolowski operator równości.

Uwaga: znalazłem to szukając colon equals operator

 90
Author: drudge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 20:19:23

Jest operatorem przypisania w Pascalu i jest często używany w dowodach i pseudo-kodzie. To to samo co = w językach C-dialekt.

Historycznie, prace informatyczne używane = do porównań równości i do zadań. Pascal użył :=, aby zastąpić trudną do wpisania strzałkę w lewo. C poszedł w innym kierunku i zamiast tego zdecydował się na operatory = i ==.

 41
Author: John Kugelman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 20:20:46

W języku statycznie wpisanym Go := inicjalizacja i przypisanie w jednym kroku. Ma to na celu umożliwienie interpretacji-jak tworzenie zmiennych w skompilowanym języku.

// Creates and assigns
answer := 42

// Creates and assigns
var answer = 42
 21
Author: Matias Forbord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-04 22:21:07

Niektóre języki używają := do działania jako operator przypisania.

 4
Author: Mike Lewis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 20:18:00

Kolejna interpretacja spoza świata języków programowania pochodzi z Wolfram Mathworld , et al:

Jeśli A i B są równe z definicji (tj. A jest zdefiniowane jako B), to zapisuje się to symbolicznie jako A=B, A:=B, lub czasami A≜B.

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

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

 4
Author: RBV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-23 02:00:27

Jest to stara składnia (pascal)dla operatora przypisania. Byłoby tak użyte:

a := 45;

Może być również w innych językach, prawdopodobnie w podobnym użyciu.

 0
Author: mklauber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 20:19:16

W wielu książkach CS jest używany jako operator przypisania, aby odróżnić go od operatora równości =. W wielu językach wysokiego poziomu przypisanie to =, a równość to ==.

 0
Author: gailbear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 20:19:53

To jak strzałka bez użycia symbolu mniej niż

W matematyce jest jak Równe, Ale A := B oznacza, że A jest zdefiniowane jako B, potrójny Pasek równy może być użyty do powiedzenia, że jest podobny i równy z definicji, ale nie zawsze to samo.

W każdym razie wskazuję na te inne odniesienia, które prawdopodobnie były w umysłach tych, którzy wymyślone, ale tak naprawdę to tylko ta płaszczyzna równa i mniej, że równe zostały wzięte (lub potencjalnie łatwo pomylić z=

Odniesienia Historyczne: po raz pierwszy zobaczyłem to w Smalltalku oryginalny język obiektowy, z którego SJ z Apple skopiował tylko część Windows, a bg z Microsoftu zmniejszył się z nich dalej (single threaded). Ostatecznie SJ w NeXT wziął drugą ważniejszą lekcję od Xerox PARC w, który stał się celem C.

Cóż, w każdym razie wzięli właśnie operator Colon-equals assiment z ALGOLA 1958, który został później spopularyzowany przez Pascala

Https://en.wikipedia.org/wiki/PARC_ (firma)

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

Przypisania zazwyczaj pozwalają zmiennej trzymać różne wartości w różne czasy w jego żywotności i zasięgu. Jednak niektóre języki (przede wszystkim ściśle funkcjonalne) nie dopuszczaj do tego. "destrukcyjne" zmiany, gdyż może to oznaczać zmiany nielokalne stan. Celem jest wymuszenie przejrzystości referencji, czyli funkcji które nie zależą od stanu jakiejś zmiennej(zmiennych), ale wytwarzają takie same wyniki dla danego zbioru danych parametrycznych w dowolnym punkcie w czas.

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

 0
Author: Master James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 10:09:40

Colon-equals był używany w Algolu i jego potomkach, takich jak Pascal i Ada, ponieważ jest tak blisko ASCII do symbolu strzałki w lewo.

Dziwna konwencja używania equals do przypisywania i double-equals do porównania została zapoczątkowana w języku C.

W prologu nie ma rozróżnienia między przypisaniem a testem równości.

 -1
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 23:31:51