wetsBed = ask 'Вы мочитесь в постель?' значение.
# Мы сохраняем возвращаемое
ask 'Вам нравится есть чимичангас?'
ask 'Вам нравится есть сопапиллас?'
ask 'Вам нравится есть тамалес?'
puts 'И ещё несколько вопросов…'
ask 'Вам нравится пить хорчата?'
ask 'Вам нравится есть флаутас?'
puts
puts 'Спасибо за то…'
puts
puts wetsBed
Здравствуйте! И спасибо, что Вы…
Вам нравится есть такое?
да
Вам нравится есть бурритос?
да
Вы мочитесь в постель?
никогда!
Пожалуйста, отвечайте «да» или «нет».
Вы мочитесь в постель?
нет
Вам нравится есть чимичангас?
да
Вам нравится есть сопапиллас?
да
Вам нравится есть тамалес?
да
И ещё несколько вопросов…
Вам нравится пить хорчата?
да
Вам нравится есть флаутас?
да
ПОЯСНЕНИЕ:
Спасибо за то… false
Неплохо, а? Мы смогли добавить больше вопросов (ведь добавлять вопросы теперь легко), но наша программа к тому же ещё и стала немного короче! Это значительное усовершенствование – мечта каждого ленивого программиста.
Думаю, было бы очень полезно привести ещё один пример метода. Мы назовём его englishNumber. Он будет принимать число, например, 22, и возвращать его английское название (в данном случае, строку 'twenty–two'). Для начала, пусть он работает только с целыми числами от 0 до 100.
(ПРИМЕЧАНИЕ: Этот метод использует новую хитрость для преждевременного возврата из метода с помощью ключевого слова return, а также представляет новый поворот в ветвлении: elsif. Из контекста должно быть ясно, как они работают.)
def englishNumber number
# Нам нужны только числа в диапазоне 0-100. if number < 0
return 'Пожалуйста, введите число ноль или больше.' end
if number > 100
return 'Пожалуйста, введите число 100 или меньше.' end
numString = '' # Эту строку мы будем возвращать.
# «left» – сколько от числа нам ещё осталось вывести.
# «write» – часть числа, которую мы выводим сейчас.
# write и left… поняли? :) left = number
write = left/100 # Сколько сотен осталось вывести?
left = left – write*100 # Вычтем эти сотни.
if write > 0
return 'one hundred'
end
write = left/10
#
Сколько десятков осталось вывести?
left = left – write*10
#
Вычтем эти десятки.
if write > 0
if write == 1 # Охо-хо…
# Поскольку мы не можем вывести «tenty–two» вместо «twelve»,
# нам нужно сделать особые исключения для них. if left == 0
numString = numString + 'ten' elsif left == 1
numString = numString + 'eleven' elsif left == 2
numString = numString + 'twelve' elsif left == 3
numString = numString + 'thirteen' elsif left == 4
numString = numString + 'fourteen' elsif left == 5
numString = numString + 'fifteen' elsif left == 6
numString = numString + 'sixteen' elsif left == 7
numString = numString + 'seventeen' elsif left == 8
numString = numString + 'eighteen' elsif left == 9
numString = numString + 'nineteen' end
# Поскольку уже мы позаботились о цифре для единиц,
# нам не осталось ничего для вывода. left = 0
elsif write == 2
numString = numString + 'twenty' elsif write == 3
numString
= numString + 'thirty'
elsif write