Так в коде на Ruby return, так что else просто не нужен. Вы же не будете писать на C так:
if (bmi <= 18.5)
return "You're underweight, you emo, you!";
else if (bmi <= 25.0)
return "You're supposedly normal. Pffft, I bet you're ugly!";
else if (bmi <= 30.0)
return "You're fat! Lose some weight, fatty!";
else
return "You're a whale, congratulations!";
Скорее вы напишете так (хотя, это далеко не лучший вариант):
if (bmi <= 18.5)
return "You're underweight, you emo, you!";
if (bmi <= 25.0)
return "You're supposedly normal. Pffft, I bet you're ugly!";
if (bmi <= 30.0)
return "You're fat! Lose some weight, fatty!";
return "You're a whale, congratulations!";
else в этом случае не несет никакой смысловой нагрузки. И так ясно, что после return следующий if выполняться не будет
Статья не об ООП, а о функциональном стиле программирования на Ruby. То, что GObject на Си реализует объектную модель, это, конечно, хорошо, но к теме данной статьи отношение имеет крайне опосредованное.
Вы же понимаете, что не в Range дело, а в .inject(:+). Для таких простых арифметических операций гораздо приятнее использовать символ, чем неуклюжий блок.
Хотите сказать, то же самое никак не сделать в C++?.. Нужен «виртуальный конструктор» — есть всяческие фабрики. События и свойства вполне успешно реализованы в Qt
Квинтэссенция отношения Линуса к C++ заключена в первой же строчке письма. Он, видимо, не осилил ООП («idiotic «object model» crap»). Ну и производительность его не устраивает, якобы.
return
, так чтоelse
просто не нужен. Вы же не будете писать на C так:Скорее вы напишете так (хотя, это далеко не лучший вариант):
else
в этом случае не несет никакой смысловой нагрузки. И так ясно, что послеreturn
следующийif
выполняться не будетПо-моему, очень похоже. А код на Haskell назвать написанным не в функциональном стиле язык не поворачивается.
.inject(:+)
. Для таких простых арифметических операций гораздо приятнее использовать символ, чем неуклюжий блок.