用参数重构 ruby 条件

Refactor ruby condition with params

我想知道 ruby

中是否有更简单的方法来完成此条件

我的情况:

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

那个条件的问题,reek throw warning of using params[:smth] 2 times,有一种可能将 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"