0

我想知道是否有更简单的方法可以在 ruby​​ 中执行此条件

我的条件:

a = params[:smth].to_s == 'foo' ? 'foo2' : params[:smth].to_s

该条件的问题,即使用params[:smth]2 次的臭味抛出警告,有一种可能分配params[:smth]给变量,但也许你知道更聪明的方法?

4

2 回答 2

7

我可能会这样写:

a = params[:smth].to_s
a = 'foo2' if a == 'foo'
于 2018-01-22T11:54:20.797 回答
0

您可以为此使用 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"
于 2018-01-22T12:07:49.027 回答