Wat is de := operator?

In sommige programmeertalen zie ik (bijv.):

x := y

Hoe wordt deze operator := gewoonlijk genoemd en wat doet hij?


Antwoord 1, autoriteit 100%

In alle talen die een operator := ondersteunen, betekent dit toewijzing.

  • In talen die een operator := ondersteunen, betekent de operator = meestal een gelijkheidsvergelijking.
  • In talen waarin = toewijzing betekent, wordt == doorgaans gebruikt voor vergelijking van gelijkheid.

betekent := =?

Ik kan me geen talen herinneren waarin := hetzelfde betekent als =.


In MySQL worden := en = beide gebruikt voor toewijzing, maar ze zijn niet uitwisselbaar en het selecteren van de juiste hangt af van de context. Om de zaken nog verwarrender te maken, wordt de operator = ook gebruikt voor vergelijking. De interpretatie van = als opdracht of vergelijking hangt ook af van de context.


Antwoord 2, autoriteit 30%

Ik zie het meestal meer in pseudocode waar het een opdracht betekent. Dus x := y betekent ‘stel de waarde van x in op de waarde van y’ terwijl x = y betekent ‘is de waarde van x gelijk aan de waarde van y?’


Antwoord 3, autoriteit 30%

Dit is een nieuwe operator die naar Python 3.8 komt en daadwerkelijk een rol speelde bij de vervroegde pensionering van BDFL Guido van Rossum.

Formeel staat de operator een zogenaamde ‘toewijzingsexpressie’ toe. Informeel wordt de operator de “walrusoperator” genoemd.

Het maakt toewijzing mogelijk en evalueert ook een uitdrukking.

Dus dit:

env_base = os.environ.get("PYTHONUSERBASE", None)
if env_base:
    return env_base

kan worden ingekort tot:

if env_base := os.environ.get("PYTHONUSERBASE", None):
    return env_base

https://www .python.org/dev/peps/pep-0572/#examples-from-the-python-standard-library


Antwoord 4, autoriteit 7%

Het symbool heet “wordt” en werd geïntroduceerd met IAL (later Algol 58 genoemd) en Algol 60. Het is het symbool voor het toekennen van een waarde aan een variabele. Men leest x := y; als “x wordt y”.

Het gebruik van “:=” in plaats van “=” voor toewijzing is wiskundige kieskeurigheid; voor zo’n gezichtspunt is “x = x + 1” onzinnig. Andere hedendaagse talen hebben misschien een pijl naar links gebruikt voor toewijzing, maar dat was niet gebruikelijk (als een enkel teken) in veel tekensets.

Algol 68 onderscheidde verder identificatie en toewijzing; INT the answer = 42; zegt dat “het antwoord” identiek gelijk is aan 42 wordt verklaard (d.w.z. een constante waarde is). In INT the answer := 42; “het antwoord” gedeclareerd als een variabele en krijgt aanvankelijk de waarde 42.

Er zijn andere toewijzingssymbolen, zoals +:=, uitgesproken als plus-en-wordt; x +:= y voegt y toe aan de huidige waarde van x en slaat het resultaat op in x.

(Spaties hebben geen betekenis, dus kunnen “in” id’s worden ingevoegd in plaats van te moeten knoeien met onderstrepingstekens)


Antwoord 5, autoriteit 4%

Veel talen gebruiken gemeenschappelijke operators. Over het algemeen is de = gereserveerd voor de toewijzing van variabelen en moet deze niet in een wiskundige context worden bekeken als deze alleen is. Gelijkheid in sommige talen zoals Java en Bash wordt echter getest ==


Antwoord 6, autoriteit 4%

PL/I heeft (had?) zowel = als :=. = wordt gebruikt voor zowel toewijzing als vergelijking — de compiler probeert te achterhalen wat je bedoelde op basis van context. Wanneer/als het besluit om een ​​vergelijking te maken waar je echt toewijzing bedoelde, kun je := gebruiken om toewijzing af te dwingen.

Beschouw bijvoorbeeld x=y=0; In C (bijvoorbeeld) zou dit betekenen “wijs 0 toe aan y, dan het resultaat daarvan (ook 0) aan x.”

In PL/I betekent dit: vergelijk y met 0, en wijs vervolgens het Booleaanse resultaat van die vergelijking toe aan x (dwz, equivalent aan x = y == 0; in iets als C) . Als je (gezond zijnd, in tegenstelling tot de ontwerpers van PL/I) bedoelde dat dit zou betekenen “wijs 0 toe aan x en y”, zou je x = y := 0; (of x := y := 0;).

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes