Ответ 1
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"
Вот хороший напишите на нем.
В JavaScript есть полезный способ проверить переменную, которая никогда не была определена в любой заданной точке. Например, следующий фрагмент кода вернет true, если переменная bob не определена:
typeof(bob)=='undefined'
Как выполнить тот же тест в Ruby?
edit: Я ищу тест, который столь же компактен по своей природе. Я придумал некоторые неудобные аппроксимации с использованием исключений и т.д., Но это не очень красиво!
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, если элемент undefined.
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