Ruby中的条件

时间:2015-02-10 15:47:20

标签: ruby

当我将75的值传递给我的程序时,为什么打印出来" 没有数字"? 75小于100且大于50.它应打印出" 范围:50 - 100 "。

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)

3 个答案:

答案 0 :(得分:1)

您错误地使用了case语句。

更合适的方法是在when中使用范围或使用if语句。

以下示例。

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

另外,您也不需要return值。

答案 1 :(得分:1)

我根本不是Ruby专家,而是基于this post,我建议你像这样编写你的switch语句:

case value
when 50..100
    message = 'number range: 50 - 100' 
else
    message = 'no number'
end

答案 2 :(得分: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)

当有超过3个选项时,您通常会使用case。在这里,简单的if...else可能是更好的选择,因为实际上只有2个选项。我选择在这里使用三元运算符,但?..:if...else相同。

一些技术要点

  • 不需要return语句; Ruby有隐式返回,因此不需要返回关键字。
  • 通常不鼓励在函数外部使用puts来返回数据;最好使用put in ie:代替return关键字

希望有所帮助。你有一个良好的开端 - 你很快就能得到它!