你有一些问题:
当其他操作符或方法在附近时,您需要将范围放在括号中.您当前的错误来自Ruby解析elsif @tree_age == 6..15
与您预期的不同 - 它将其视为(1 == 6)..15
,并且false..15
显然没有任何意义.
要测试一个数字在一个范围内,请使用(1..5) === num
,而不是num == (1..5)
.Range#===
被定义为测试该Range
包括右手侧,而Fixnum#==
与Fixnum#===
这两个只是测试的右手侧在数值上相等.
你不需要测试@tree_age > 0
.你已经在测试它了1..5
.
您还可以考虑使用case
此语句,这可能更容易阅读.case
使用它进行比较===
.
@oranges = case @tree_age when 1..5 then 5 when 6..15 then 20 else 50 end