Ugrás a tartalomhoz

chained assignment

A Wikiszótárból, a nyitott szótárból


Főnév

chained assignment (tsz. chained assignments)

  1. (informatika) A chained assignment (láncolt értékadás) egy programozási minta, amelyben több változót egyszerre állítunk be ugyanarra az értékre egyetlen kifejezésen belül. Ez gyakori C++, C, Python, Java és sok más nyelv esetén is.



🧪 Alapötlet

int a, b, c;
a = b = c = 5;

Ez nem azt jelenti, hogy minden változót külön adjuk értékül. Ehelyett:

  1. c = 5 értéket ad vissza (ami 5),
  2. azt továbbadjuk: b = 5,
  3. majd a = 5.



🧮 Mi történik belül?

A értékadás (=) egy jobbról balra asszociatív operátor. Tehát:

a = (b = (c = 5));

A b = (c = 5) értéke 5, amit aztán továbbad az a-nak.



✅ Előnyök

  • Tömör, olvasható kód:

    x = y = z = 0;
    
  • Hasznos inicializáláskor vagy reset műveleteknél.



⚠️ Figyelmeztetések

  • Az = nem egyenlőségvizsgálat! Az értékadás és a == (összehasonlítás) különböznek!
  • Vigyázni kell mellékhatásokkal (pl. pointereknél, osztálymetódusoknál).



🧵 Példák

C++

int x, y;
x = y = 42;  // mindkettő 42 lesz

Python

x = y = z = []
z.append(5)
print(x)  # [5] – mindhárom ugyanarra a listára mutat

Itt a referenciák miatt nem új listát kap mindegyik, hanem ugyanazt osztják meg!



👨‍💻 Osztályokkal (C++)

Ha egyedi típusra alkalmazzuk, az operator=-t is meg kell határozni:

class MyClass {
public:
    int val;
    MyClass& operator=(int v) {
        val = v;
        return *this;
    }
};

MyClass a, b, c;
a = b = c = 7;

Itt is balról jobbra történik a visszatérési értékek láncolása a referencia (&) miatt.



🔁 Összefoglalás

Fogalom Jelentés
Chained assignment Több változó értékadásának láncolása egy kifejezésben
Asszociativitás Jobbról balra
Használat Inicializálás, tömbök, nullázás
Veszély Referenciák, pointerek, nem triviális értékadás