1

私はこの声明を持っています:

if user = params[:user] && action == :delete
end

ユーザーが常に :delete に設定されるのはなぜですか?

ユーザーが渡した場合はユーザー名に設定し、それ以外の場合は nil に設定しないでください。

4

2 に答える 2

3

()期待どおりに評価されるようにするには、Rubyで割り当てを配置する必要があります

if (user = params[:user]) && action == :delete
end
于 2012-10-09T05:44:50.457 に答える
1

&&結合よりも強く結合します。andかっこを省略したい場合は、代わりに使用できます。

if user = params[:user] and action == :delete
end

スタイルの問題として、=(割り当て)の戻り値を使用することは問題ありませんが、割り当てを括弧で囲みます。

  # good - shows intended use of assignment
  if (v = array.grep(/foo/)) ...

  # bad
  if v = array.grep(/foo/) ...

  # also good - shows intended use of assignment and has correct precedence.
  if (v = self.next_value) == 'hello' ...

and条件式でのおよびの使用orは推奨されていないため、IanBishopによって提案された解決策を使用することをお勧めします。

于 2012-10-09T06:12:57.167 に答える