Я читаю «язык рубинового программирования» и натолкнулся на следующий фрагмент кода.Передача нескольких аргументов блоку
a.inject do | sum, x |
sum + x
end
Я понимаю, что х содержит один элемент из, который будет передан Бок, но «сумма» часть является меня смущает, это какой-то оператор или функцию, или это просто еще одна переменная, как х. Я понимаю, что переменную x можно было бы назвать f или v, но если это так, как рубин знает, что x - это переменная, чтобы передать элемент в итератор, то он мог бы так же легко передать переменную в сумму (если она является даже переменной).
Надеюсь, это имеет смысл, так как всегда я нахожу, что это должно было положить мое замешательство в работу, как если бы я лучше понимал природу проблемы, я был бы более правдоподобным, чтобы иметь возможность найти свое решение.
Спасибо!
так в моем примере, как рубин знает, чтобы дать значение x, потому что его последний в списке, или это потому, что сумма - это какое-то ключевое слово? будет '| x, sum | 'делают то же самое? –
ОК, так что (просто чтобы получить это прямо в моем маленьком мозгу), если бы я должен был это сделать '| a, b, c, val | ', тогда a, b и c будут переменными, которые я использую в блоках и val, потому что он был назван последним, будет где итератор передает другое значение каждому блоку –
aaah, отлично, поэтому итератор определяет переменные, которые он ожидает, что очищает все! очень признателен! –