Тестирование на наличие неопределенных переменных в Ruby a la JavaScript?

StackOverflow https://stackoverflow.com/questions/888963

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top