Никита, блок и функция - разные вещи. Не стоит их путать. Что в Ruby, что в
Perl. Хотя очень похожи (возможно преобразование).

Например, операторы return, next будут работать по-разному.

Только в JavaScript нет явных блоков, а лишь функции, которые всегда
являются замыканиями. Соответственно, поведение более жёстко прописано.

Именно поэтому блочный yield в Ruby сводится к обычному fn.call(this,
arguments...) или проще, если ранее выполнен bind.

При этом yield позволяет передать набор параметров.

На деле не проверял, работает ли в Perl @_ правильно при передаче блока в
функцию с прототипом &.

17 октября 2012 г., 18:34 пользователь Nikita Zubkov
<[email protected]>написал:

> 17 октября 2012 г., 13:20 пользователь Akzhan Abdulin <
> [email protected]> написал:
>
>> Речь не о том yield, что в генераторах, хотя он уже включен в JavaScript
>> 1.7 и ожидается позднее в стандарте ECMAScript.
>
> Да, речь не о том yield.
>
> Речь о том, что в Perl является вызовом подпрограммы по её ссылке.
>>
> Ну так в JS тоже самое. Где в JS что либо близкое по синтаксису к yield? И
> вообще в ruby yield всего лишь сахар над вызовом блока (читай функции).
>
> --
> С уважением,
> Никита Зубков
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить