[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