Тестирование на наличие неопределенных переменных в Ruby a la JavaScript?
-
23-08-2019 - |
Вопрос
В JavaScript есть полезный способ проверить наличие переменной, которая никогда не была определена ни в какой заданный момент.Например, следующий фрагмент кода вернет верно если переменная боб не был определен:
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