Основной вопрос Ruby / Rails о понимании блоков и переменных блоков - PullRequest
1 голос
/ 03 марта 2011

Я начинаю чувствовать себя комфортно с Ruby / Rails, но должен признать, что я все еще выгляжу косо, когда вижу незнакомого block. возьмите следующий код:

(5..10).reduce(0) do |sum, value|
  sum + value
end

Я знаю что он делает ... но как узнать порядок параметров, передаваемых в блок в Ruby? Они взяты в порядке? Как вы быстро знаете, что они представляют?

Я предполагаю, что нужно посмотреть на источник (или документацию), чтобы выяснить, что получается ... но есть ли ярлык? Я думаю, мне интересно, как старые ветеринары быстро распознают, что делает блок?!? Как подходить к рассмотрению / интерпретации блоков?

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Вы просто должны посмотреть это в документации, пока не запомните. У меня все еще проблемы с reduce и парой других. Это все равно что пытаться запомнить порядок аргументов для обычных методов. Программисты должны иметь дело с этой проблемой практически на каждом языке.

1 голос
/ 03 марта 2011

Когда вы пишете код, нет другого способа, кроме как проверить документацию - даже если Ruby достаточно последовательный и последовательный в таких вещах, поэтому часто вы просто ожидаете, что все будет работать определенным образом.С другой стороны, когда вы читаете код, вы можете просто надеяться, что кодер был умен и достаточно любезен, чтобы использовать согласованные имена переменных.В вашем примере

(5..10).reduce(0) do |sum, value|
  sum + value
end

Есть причина, если переменные называются sum и value!:-) Что-то вроде

(5..10).reduce(0) {|i,j|i+j}

, конечно, то же самое, но гораздо менее читабельно.Итак, урок здесь: напишите хороший код, и вы передадите некоторую информацию, а не просто инструкции, на компьютер!

...