Rubynovich
Присоединился 24 мая 2006
Содержимое удалено Содержимое добавлено
Строка 26:
a = 5
Это выражение является более правильным с точки зрения высокоуровневого программирования. Давайте рассмотрим немного более сложный пример неправильного кода:
(1..5).each{ |i| sum += i }
p sum
Как мы видим, внутри блока присутствует второе присваивание, что противоречит нашему принципу. Как от него избавиться? Использовать не .each, а специализированный метод для суммирования/умножения/конкатенации .inject:
p (1..5).inject( 0 ){ |sum,i| sum + i }
Как мы видим, нам не только удалось избавиться от двух присваиваний, но и превратить переменную в параметр. Кстати, решение задачи получилось "в одну строчку".
=== Отсутствие условных конструкций if, case и т.д. ===
|