2014-03-27 81 views
4

有没有办法在ruby中使用整数比较的case语句?我发现了很多比较字符串的例子,但我的case下面的例子失败,语法错误。ruby​​ case case statement and compare

def get_price_rank(price) 
    case price 
    when <= 40 
     return 'Cheap!' 
    when 41..50 
     return 'Sorta cheap' 
    when 50..60 
     return 'Reasonable' 
    when 60..70 
     return 'Not cheap' 
    when 70..80 
     return 'Spendy' 
    when 80..90 
     return 'Expensive!' 
    when >= 90 
     return 'Rich!' 
    end 
end 
+0

[Ruby范围:操作符在case语句中]的可能重复(http://stackoverflow.com/questions/16065244/ruby-range-operators-in-case-statement)或http://stackoverflow.com/questions/18630872 /如何对生成定制-case语句功能于红宝石/ 18631204#18631204 – knut

回答

13

case..when块,你不能只是===进行任何比较。所以我想,如下编写代码:

def get_price_rank(price) 
    case price 
    when 41..50 
     'Sorta cheap' 
    when 50..60 
     'Reasonable' 
    when 60..70 
     'Not cheap' 
    when 70..80 
     'Spendy' 
    when 80..90 
     'Expensive!' 
    else 
     if price >= 90 
     'Rich!' 
     elsif price <= 40 
     'Cheap!' 
     end 
    end 
end 

return隐含,因此没有必要提及。

0

重写你的情况是这样的:

case price 
when 0..40 then 
    return 'Cheap!' 
when 41..50 then 
    return 'Sorta cheap' 
when 50..60 then 
    return 'Reasonable' 
when 60..70 then 
    return 'Not cheap' 
when 70..80 then 
    return 'Spendy' 
when 80..90 then 
    return 'Expensive!' 
else 
    return 'Rich!' 
end