1

私はそれを考えました:

do_something if condition

と同等でした

if condition
  do_something
end

この規則を尊重しないコードを見つけました。

if !(defined? foo)
  foo = default_value
end

ここで、fooかかりますdefault_value

foo = default_value if !(defined? foo)

ここで、fooかかりますnilif前者のコードでは、が最初に実行され、次と同等であると思います。

foo = (default_value if !(defined? foo))

default_value変数が定義されていない場合に設定する方法はありますか?

一般的な答え:

演算子を使用したいコメントがいくつかあります...次の場合は機能し||=ません:foonil

foo ||= default_value

fooが定義されている間、デフォルト値を返します。

defined?と等しくない「not」を使用することを主張しnilます。

4

2 に答える 2

5

ルビーのやり方は

foo ||= default_value

しかし、もちろん

if (defined? foo)
  foo = default_value
end

foo = default_value if !(defined? foo)

異なっています。同じものを比較しているわけではありません。

比較する(defined? foo)一方と比較する他方で!(defined? foo)

あなたが本当に求めているのは次のことだと思います

if !(defined? foo)
  foo = default_value
end
于 2013-08-14T12:22:32.400 に答える