2015-02-10 3 views
1

Когда я передаю значение 75 моей программе, почему она печатает «no number»? 75 составляет менее 100 и больше 50. Он должен распечатать «диапазон: 50 - 100».Условия в Ruby

def report_back(value) 
case value 
    when (value < 100) && (value > 50) 
     message = 'number range: 50 - 100' 
    else 
     message = 'no number' 
end 
    return message 
end 

puts 'enter a number between 0 - 100:' 
number = gets.chomp.to_i 

puts report_back(number) 

ответ

1

Есть ли какой-либо причине вы решили структурировать свой ответ, как это? Вы можете легко записать его как что-то вроде:

def report_back(value) 
    value < 100 && value > 50 ? message = 'number range: 50 - 100' : message = 'not' 
    puts message 
end 

number = gets.chomp.to_i 
report_back(75) 

Вы обычно используют case, когда есть более 3-х вариантов. Здесь простой if...else, вероятно, будет лучшим выбором, поскольку на самом деле есть только 2 варианта. Я решил использовать здесь тройной оператор, но ?..: идентичен if...else.

Несколько технических точек

  • нет необходимости для return отчетности; Ruby имеет неявный доход, поэтому ключевое слово return не требуется.
  • Использование функции puts вне функции возврата данных, как правило, не рекомендуется; его лучше всего использовать, например: вместо ключевого слова return

Надеюсь, что это поможет. Вы отправитесь в хороший старт - вы получите это в мгновение ока!

+0

# вот моя новая программа, дайте мне знать, что ты думаешь? Защиту report_back (значение) \t, если значение <100 && значение> 50 \t \t ставит 'диапазон номеров: 50 - 100' \t ELSIF значение <50 \t \t ставит 'диапазон номеров: 0 - 50' \t другое \t \t ставит 'число больше чем 100' \t конца конца пут 'введите число от 0 - 100:' числа = gets.chomp.to_i puts report_back (number) – DEdesigns57

+0

Выглядит хорошо! Небольшой комментарий: на последней строке (строка 13?) вы снова используете 'puts', что является избыточным. 'puts' выводит на стандартный вывод (он выведет его на консоль), чтобы он напечатал правильный результат из метода. Я не запускал его, но я предполагаю, что все, что 'puts' будет делать, это добавить дополнительную строку в вывод консоли. Удаление этого файла даст вам нужную вам программу. Отличное улучшение! Похоже, он напечатает то, что вы хотите. –

1

Вы используете инструкцию case неправильно.

Более подходящий подход заключается в использовании диапазона в вашем when или для использования инструкции if.

Пример ниже.

def report_back(value) 
    case value 
    when 50...100 
    'number range: 50 - 100' 
    else 
    'no number' 
    end 
end 

Как и в сторону, вы также не нужно значение return.

+0

так что конкретно обозначение ... означает? это включительно? – DEdesigns57

+0

Нет, это не включено, поэтому '(1..2)' будет иметь 1 и 2 в нем, но '(1 ... 2)' будет просто иметь 1 –

1

Я не эксперт рубин на всех, но на основе this post, я хотел бы предложить вам написать заявление переключатель, как это:

case value 
when 50..100 
    message = 'number range: 50 - 100' 
else 
    message = 'no number' 
end 
Смежные вопросы