perl syntax

From
Bulat Ziganshin (2:5093/4.126)
To
Artem Chuprina (2:5054/37.63)
Date
2005-04-07T19:33:36Z
Area
RU.PERL
* Originally in RU.PERL
Приятного тебе дня и незабываемой ночи, Artem!

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> на вход некоторой функции.  Не понял синтаксиса функции...  Или 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)
SEEN-BY: 450/208 452/25 100 454/9 455/15 461/33 74 106 640 464/34 465/204
SEEN-BY: 467/24 469/125 478/44 65 550/150 5068 4600/126 4614/9 4623/56 4625/9
SEEN-BY: 4626/100 4632/10 4635/99 1024 4641/444 4642/27 48 4657/50 5001/50
SEEN-BY: 5002/76 5002 5003/34 5010/53 146 5011/13 5015/4 28 214 5019/5 5020/52
SEEN-BY: 5020/115 128 133 150 175 486 600 642 744 794 921 958 968 982 1100
SEEN-BY: 5020/1169 1212 1234 1626 1642 1653 1826 1829 1930 2044 2200 2345 2908
SEEN-BY: 5020/4400 4441 5021/2 5023/11 5024/1 73 5025/19 5030/69 195 382 436
SEEN-BY: 5030/611 920 1016 1039 1520 1688 5031/7 63 5032/11 20 5033/21 35
SEEN-BY: 5034/8 5035/38 63 5036/13 5037/21 36 5038/4 5040/33 47 5041/4 5045/7
SEEN-BY: 5045/42 5047/47 5049/6 157 5050/9 41 47 5051/35 5053/16 38 5054/1 8 9
SEEN-BY: 5054/35 36 37 45 50 66 67 81 85 5055/177 5056/16 5058/77 5059/2 9 20
SEEN-BY: 5060/90 5062/4 7 5063/41 51 5064/7 35 36 5070/26 66 948 5071/22
SEEN-BY: 5075/37 5077/70 5079/49 5083/13 5090/23 105 5093/4 27 33 57 5096/18
SEEN-BY: 5100/113 6023/1 6033/2727 6070/5 6096/10
PATH: 5093/4 5020/52 5054/1 37