Присваивание внутри оператора return
Я начал изучать систему непересекающихся множеств, но на сайте e-maxx.ru представлен только код на C++, а я знаю только Питон 3 и Паскаль. Вот непонятный мною код:
int find_set (int v) {
if (v == parent[v])
return v;
return parent[v] = find_set (parent[v]);
}
Интересует строчка return parent[v] = find_set (parent[v]);
Почему при возвращении присваивается значение переменной? Если возможно, прошу подсказать, как это можно написать на питоне или паскале
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
- Потому что в Си(++) можно использовать присваивания в любых выражениях.
- Потому что это удобно, когда изменение и дальнейшие действия в одном месте.
- Переменная
parentглобальная, так что присваивание имеет смысл. - Начиная с Питона 3.8 так тоже можно будет делать с помощью оператора
:=.