Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
return [nil,"Name is required"] if String(person.(:name)) == ''bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
| bmi <= 18.5 = "You're underweight, you emo, you!"
| bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
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 выполняться не будетadd_person = ->(name,birthdate,gender) {
if String(name) == '' # валидации место в отдельной функции
[nil,"Name is required"]
elsif String(birthdate) == ''
[nil,"Birthdate is required"]
elsif String(gender) == ''
[nil,"Gender is required"]
elsif gender != 'male' && gender != 'female'
[nil,"Gender must be 'male' or 'female'"]
else
id = insert_person.(name,birthdate,gender) # side effect
[[name,birthdate,gender,id],nil]
end
}
Занимательное функциональное программирование в Ruby