chained assignment
Megjelenés
Főnév
chained assignment (tsz. chained assignments)
- (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:
c = 5értéket ad vissza (ami 5),- azt továbbadjuk:
b = 5, - 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 |
- chained assignment - Szótár.net (en-hu)
- chained assignment - Sztaki (en-hu)
- chained assignment - Merriam–Webster
- chained assignment - Cambridge
- chained assignment - WordNet
- chained assignment - Яндекс (en-ru)
- chained assignment - Google (en-hu)
- chained assignment - Wikidata
- chained assignment - Wikipédia (angol)