[Freeschool] [JT] Re: чему стоит учить в школе
Mikolaj Golub
=?iso-8859-1?q?to=2Emy=2Etrociny_=CE=C1_gmail=2Ecom?=
Пт Окт 24 16:59:35 MSD 2008
On Fri, 24 Oct 2008 15:00:56 +0400 Dmitriy M. Maslennikov wrote:
DMM> 24 октября 2008 г. 14:49 пользователь Mikolaj Golub
DMM> <to.my.trociny на gmail.com> написал:
>> sum = 0
>> while line = gets do
>> line.split.each {|x| sum += x.to_i}
>> end
>> puts sum
DMM> А не подскажете, эти вызываемые объекты, что передаются функциям в
DMM> качестве последнего аргумента (если я правильно понял этот и
DMM> предыдущие примеры). Они всегда последние и вне скобок? Или это
DMM> специальные функции, принимающие вызываемый объект? Таких объектов
DMM> может быть больше, чем один? А то из примеров как-то однобоко
DMM> выглядит)
Эти объекты назваются блоками и функция (метод) взаимодействует с таким блоком
посредством метода yield.
Допустим, если определить функцию:
def call_block
yield(1, 2)
end
То, получим:
irb(main):021:0> call_block {|a, b| a + b}
=> 3
irb(main):022:0> call_block {|a, b| a - b}
=> -1
irb(main):023:0> call_block {|a, b| a * b}
=> 2
т.е. блок подставляется в функцию call_block вместо yield, и параметры (1, 2)
передаются блоку.
А вообще, книжку здесь уже рекомендовали:
http://www.pragprog.com/titles/ruby/programming-ruby
Достаточно прочитать второй раздел, чтоб получить представление о языке.
Честно говоря, я собственно с ruby плохо знаком :-) Вот летом, во время
отпуска книжечку эту почитал, понравилось, больше чем питон, но все никак не
могу переключиться, преодолеть начальный барьер, все по старинке на Perl...
--
Mikolaj Golub
Подробная информация о списке рассылки Freeschool