Я знаю PHP и C #, но мне бы очень хотелось изучить RoR. С этой целью я начал читать официальную документацию. У меня есть вопросы по некоторым примерам кода.
Первый - с итераторами:
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
Я понимаю, что yield
означает «выполнить связанный блок здесь». Меня бросает | значение | n =
часть из каждая
. Другие блоки имеют для меня больше смысла, поскольку они, кажется, имитируют лямбды в стиле C #:
public int sum(int n, int value)
{
return Inject((n, value) => n + value);
}
Но первый пример меня сбивает с толку.
Другой - с символами. Когда я захочу их использовать? И почему я не могу сделать что-то вроде:
class Example
attr_reader @member
# more code
end