Несколько простых вопросов по Ruby - итераторы, блоки и символы

Я знаю 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
6
задан mu is too short 6 January 2012 в 19:43
поделиться