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

Перейти на страницу:

Похожие книги