|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Bulat Ziganshin 2:5093/4.126 07 Apr 2005 19:33:37 To : Artem Chuprina Subject : perl syntax -------------------------------------------------------------------------------- Thursday April 07 2005, Artem Chuprina writes to Bulat Ziganshin: BZ>> первое очень просто - x.values, второе - x.values[0]+x.values[1], BZ>> в общем виде - x.values.inject { |sum,a| sum+a } AC> А вот тут синтаксиса не понял... То есть понял, что x.values подается AC> на вход некоторой функции. Hе понял синтаксиса функции... Или inject AC> - это подача на вход именно аккумулятору? Тогда синтаксис чуть AC> понятнее, но все равно странноватый... x.inject f примерно соответствует коду: y = x[0] y = f(y,x[1]) y = f(y,x[2]) ... return y т.е. вышеприведённое выражение - самое банальное суммирование элементов x.values. в фигурных скобках записана closure AC> Синтаксис функция-аргументы, а не объект-метод-аргументы, как здесь, AC> надеюсь, бывает? А то там может быть две переменных - x и y... и да, и нет. на глобальном уровне можно объявить функции, можно с ними работать как с функциями, но на самом деле они будут объявлены как методы класса Object (корня иерархии классов) и будут получать аргумент self, просто никак его не используя. в общем, ruby успешно делает вид, что в нём есть функции, хотя на самом деле есть только методы классов :) Bulat, mailto:bulatz-AT-fort.tatarstan.ru, ICQ: work 15872722, home 11849833 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: Чубайс Бессмертный - повелитель Тьмы (2:5093/4.126) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/334042558e0b.html, оценка из 5, голосов 10
|