我是一个Ruby新手.
我怎样才能为这个功能写得更好?我可以使用哈希表.
def readable_status(status)
if status == "1"
return "go"
end
if status == "2"
return "stop"
end
if status == "3"
return "die"
end
end
Run Code Online (Sandbox Code Playgroud)
如果您想使用哈希(根据您的问题),您可以这样做:
def readable_status(status)
readable = { "1" => "go", "2" => "stop", "3" => "die" }
readable[status] || "default value"
end
Run Code Online (Sandbox Code Playgroud)
怎么样
def readable_status(status)
%w{go stop die}[status.to_i - 1]
end
Run Code Online (Sandbox Code Playgroud)
当然,只需使用
def readable_status(status)
m = {'1' => 'go', '2' => 'stop', '3' => 'die'}
m[status]
end
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以使它成为oneliner:
...
{'1' => 'go', '2' => 'stop', '3' => 'die'}[status]
Run Code Online (Sandbox Code Playgroud)
我没有尝试使用Hash-es来解决这个问题,因为给出了一些欠优化的规范(意思是:在开发过程中业务改变了规范).
哈希是好的,直到你需要编写比单个值更复杂的东西.如果需要将这些单个值更改为方法,则必须重写所有内容,因为Hashes在定义哈希时通过调用方法的值来获取方法的值.如果稍后方法的返回值发生变化,则不会更改哈希值.
它仍然可读英文:-)
def readable_status(status)
case status
when "1" then "go" end
when "2" then "stop" end
when "3" then "die" end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |