?

Log in

No account? Create an account

Previous Entry | Next Entry

И никаких крестов

go = c + lua?

PS: интересно, а кто знает, в каких ещё языках перестановка значений переменных делается одной командой типа "a, b = b, a;"?

Comments

( 9 comments — Leave a comment )
ivanstor
Jan. 2nd, 2015 12:38 am (UTC)
Старый-добрый Perl
(a, b) = (b, a);
32bit_me
Jan. 2nd, 2015 02:09 am (UTC)
В Python точно так же.
В С перестановка одной строкой делается так a ^= b ^= a ^=b;
nealar
Jan. 2nd, 2015 06:15 am (UTC)
(λ (a,b) -> (b,a))
хотя это не вполне то :)

Edited at 2015-01-02 06:16 am (UTC)
gremlinable
Jan. 2nd, 2015 07:43 am (UTC)
Ну да, лямбды и параллельное присваивание несут разные смыслы. Впрочем, глядя на указанные выше перл и питон (в которых исключения процветают), я теперь сильно сомневаюсь, что я правильно понимаю смысл параллельного присваивания.
dervish_candela
Jan. 2nd, 2015 06:52 am (UTC)
но зачем?
nealar
Jan. 2nd, 2015 06:54 am (UTC)
Гугол же! Им скучно.
gremlinable
Jan. 2nd, 2015 07:26 am (UTC)
Ну перестановка значений, конечно, не самоцель параллельного присваивания, скорее развлекаловка. Основная задача, если я правильно понимаю, нативная возможность вернуть из функции несколько значений, что, в свою очередь, надо для того, что бы исключить из языка богомерзкие исключения и не городить при этом API, полное передачи аргументами указателей на место для складывания результата, как в C.
dervish_candela
Jan. 2nd, 2015 07:58 am (UTC)
кстати да. возможность возвращать по нескольку значений из функции - это красиво и удобно.
gremlinable
Jan. 2nd, 2015 07:34 am (UTC)
Прикольно, никогда не обращал внимание на перл с питоном... Впрочем, перл пытался в юности освоить - не осилил, видимо как раз из-за такого весёлого синтаксиса. =)
Сейчас спросил гугол про параллельное присваивание, он меня сразу ткнул носом в мануал по Lua:

Параллельное присваивание
Подобно таким скриптовым языкам, как Perl, Python, Ruby и Icon, допускает параллельное присваивание.
( 9 comments — Leave a comment )