JavaScript には、特定の時点で一度も定義されていない変数をテストするための便利な方法があります。たとえば、変数bobが定義されていない場合、次のコード スニペットはtrueを返します。
typeof(bob)=='undefined'
Ruby で同じテストを実行するにはどうすればよいですか?
編集:本質的に同じようにコンパクトなテストを探しています。例外などを使用していくつかのぎこちない近似を思いつきましたが、それらはあまりきれいではありません!
JavaScript には、特定の時点で一度も定義されていない変数をテストするための便利な方法があります。たとえば、変数bobが定義されていない場合、次のコード スニペットはtrueを返します。
typeof(bob)=='undefined'
Ruby で同じテストを実行するにはどうすればよいですか?
編集:本質的に同じようにコンパクトなテストを探しています。例外などを使用していくつかのぎこちない近似を思いつきましたが、それらはあまりきれいではありません!
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"
ここにそれについての良い記事があります。
defined?
アイテムが未定義の場合にnilを返す関数です。
defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"
それで:
if defined?(somevar)
do_something
end
定義されていることに注意してください。変数が定義されている場合は文字列を返し、定義されていない場合は nil を返すため、結果の条件付きチェックを使用します。構文は、ブール値を返すことをほのめかしていると思います。
すべてのユースケース:
defined? ur_variable
=> nil
ur_variable= 12
defined? ur_variable
=> "local-variable"
another_variable = nil
defined? another_variable
=> "local-variable"
この方法でテストすることもできます。
if somevar.nil
# not set do something
else
# is set do something else
end