这是编写 Ruby 代码的最佳方式吗?
有没有更好的方法来编写这个 Ruby 代码?请帮忙重构。
def get_code(val)
case val
when 0..20 then 'E2'
when 20..32 then 'E1'
when 33..40 then 'D'
when 41..50 then 'C2'
when 51..60 then 'C1'
when 61..70 then 'B2'
when 71..80 then 'B1'
when 81..90 then 'A2'
when 91..100 then 'A1'
else 'A0'
end
end
Is there a better way to write this Ruby code? Please help to refactor.
def get_code(val)
case val
when 0..20 then 'E2'
when 20..32 then 'E1'
when 33..40 then 'D'
when 41..50 then 'C2'
when 51..60 then 'C1'
when 61..70 then 'B2'
when 71..80 then 'B1'
when 81..90 then 'A2'
when 91..100 then 'A1'
else 'A0'
end
end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你的代码非常好。
为了好玩,您可以使用散列而不是
case
。或者使其更加内联:)
,并且正如@Geo 注意到的那样,您应该从方法中提取哈希值。
Your code is quite good.
For fun you can use hash instead of
case
.Or to make it more inline :)
and, as @Geo noticed, you should extract your hash out of method.
我不确定你是如何处理 0 负数的。它看起来像一个分级系统。如果我的代码有错误,我想你能够修复它。
更新
另一个版本:
I am not sure about how you are dealing with 0, negatives. It looks like a grading system. If there is a mistake to my code, I think you will be able to fix it.
Update
Another version:
不是重构,只是一种更短的编写方式:
或者您可以用分号替换 then:
Not a refactoring, just a shorter way to write it:
Or you could substitute the then's with semi-colons:
如果这是该模式的唯一实例,则不值得缩短;它非常清晰,而且不是很吵。
If this is the only instance of this pattern, then it's not worth shortening; it's perfectly clear as it is, and not very noisy.