我想知道在ruby中是否有更简单的方法来处理这种情况
我的条件:
a = params[:smth].to_s == 'foo' ? 'foo2' : params[:smth].to_s
这种情况的问题,即2次使用params[:smth]
的警告,有可能将params[:smth]
分配给变量,但也许你知道更聪明的方式吗?
答案 0 :(得分:7)
我可能会这样写:
a = params[:smth].to_s
a = 'foo2' if a == 'foo'
答案 1 :(得分:0)
你可以使用lambda。 但之前设置的varialbe是最好的方法。
像这样:p =->(s){s == 'foo' ? 'foo2' : s}
params = {smth: 'foo'}
a = p.(params[:smth].to_s)
# => "foo2"
params = {smth: 'bar'}
a = p.(params[:smth].to_s)
# => "bar"