![]() |
Порядок вычисления аргументов функции
Недавно вышел у нас спор о легитимности присвоения нового значения аргументу функции, если этот аргумент передается в функцию более одного раза (чтобы было понятнее - пример):
Код AS3:
|
Код AS3:
Код AS3:
Видимо ,сначала в функцию передаются аргументы, а потом начинается обработка этих аргументов |
Genzo - ww спрашивает на сколько понял о другом.
типа Код AS3:
|
Тут дело немного в другом :
Код AS3:
|
Вообще-то
Цитата:
Думаю программист вправе. Но я лучше заведу лишнюю переменную, пожертвовав "красотой" решения. |
Спор о легитимности в программировании. Вкусно, как орбит-анонимная_функция.
|
Я к тому, что предположим в Си порядок вычисления аргументов не определен, и каждый компилятор делает это в меру своей испорченности - по-разному, некоторые компиляторы могут даже в пределах одной функции делать это то справа налево, то слева направо. Таким образом, код типа f(i, ++i) в Си счиается непортабельным. В некоторых других языках порядок вычисления аргументов изначально оговорен, и (например в Common Lisp) код (f i (setf i (1+ i))) вполне себе портабельный (но, например, в Scheme тот же самый код - не портабельный, да и вообще не правильный, т.как порядок вычисления не определен).
Я искал похожую информацию про AS3 - в том смысле, что я думал, что, например, в статье про Function это должно было бы быть оговорено - ан нет... |
Легитимность, выходит, на вкус компилятора.
|
Максимум, что я себе позволяю: items.splice(i--, 1);
Но это совершенно однозначный код. |
| Часовой пояс GMT +4, время: 11:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.