
24.08.2009, 15:25
|
|
Познающий
Регистрация: 06.07.2009
Сообщений: 54
Провел на форуме: 65872
Репутация:
17
|
|
ок.
буду первым. недавно начал изучение. вопрос вызвал один код
Код:
class Array
def inject(n)
each { |value| n = yield(n, value) }
n
end
def sum
inject(0) { |n, value| n + value }
end
def product
inject(1) { |n, value| n * value }
end
end
здесь всё работает, и я отлично понимаю как..
но вот если его изменить на
Код:
class Array
def inject(n)
each { |value| yield(n, value) }
n
end
def sum
inject(0) { |n, value|n = n + value; return n}
end
def product
inject(1) { |n, value|n = n * value; return n}
end
end
то работать он перестаёт. при суммировании он возвращает тока первый элемент. думаю надо копать в сторону локальности переменных. но понять точно не могу. видимо у меня немного не правильное понимание работы блоков. Зарание благодарен
|
|
|