我想知道是否有更简单的方法可以在 ruby 中执行此条件
我的条件:
a = params[:smth].to_s == 'foo' ? 'foo2' : params[:smth].to_s
该条件的问题,即使用params[:smth]
2 次的臭味抛出警告,有一种可能分配params[:smth]
给变量,但也许你知道更聪明的方法?
我想知道是否有更简单的方法可以在 ruby 中执行此条件
我的条件:
a = params[:smth].to_s == 'foo' ? 'foo2' : params[:smth].to_s
该条件的问题,即使用params[:smth]
2 次的臭味抛出警告,有一种可能分配params[:smth]
给变量,但也许你知道更聪明的方法?
我可能会这样写:
a = params[:smth].to_s
a = 'foo2' if a == 'foo'
您可以为此使用 lambda。但是之前设置的变量是最好的方法。
像这样:
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"