23

JavaScript には、特定の時点で一度も定義されていない変数をテストするための便利な方法があります。たとえば、変数bobが定義されていない場合、次のコード スニペットはtrueを返します。

typeof(bob)=='undefined'

Ruby で同じテストを実行するにはどうすればよいですか?

編集:本質的に同じようにコンパクトなテストを探しています。例外などを使用していくつかのぎこちない近似を思いつきましたが、それらはあまりきれいではありません!

4

5 に答える 5

44
defined?(variable_name)

irb(main):004:0> defined?(foo)
=> nil
irb(main):005:0> foo = 1
=> 1
irb(main):006:0> defined?(foo)
=> "local-variable"

ここにそれについての良い記事があります。

于 2009-05-20T16:34:06.363 に答える
9

defined?アイテムが未定義の場合にnilを返す関数です。

defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"

それで:

if defined?(somevar)
  do_something
end
于 2009-05-20T16:35:21.683 に答える
3

定義されていることに注意してください。変数が定義されている場合は文字列を返し、定義されていない場合は nil を返すため、結果の条件付きチェックを使用します。構文は、ブール値を返すことをほのめかしていると思います。

于 2009-05-20T16:39:31.237 に答える
0

すべてのユースケース:

defined? ur_variable
=> nil

ur_variable= 12
defined? ur_variable
=> "local-variable"

another_variable = nil
defined? another_variable
=> "local-variable"
于 2015-06-05T08:32:21.453 に答える
-1

この方法でテストすることもできます。

   if somevar.nil
        # not set do something
    else
        # is set do something else
    end
于 2013-04-18T14:14:53.163 に答える