Значения по умолчанию для переменных Ruby - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно знать значения переменных по умолчанию в ruby.

Global Variables: nil
Instance Variables: ? 
Class Variables: ?
Local Variables: ?

Я посмотрел здесь , но все, что я мог найти, это то, что глобальные переменные имеют нулевое значение.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Это тривиально проверить себя:

  • неопределенные глобальные переменные оцениваются в nil и генерируют предупреждение:

    defined? $foo
    #=> nil
    
    $foo
    #=> nil
    # warning: global variable `$foo' not initialized
    
  • неопределенные локальные переменные raise a NameError:

    defined? foo
    #=> nil
    
    foo
    # undefined local variable or method `foo' for main:Object (NameError)
    
  • определенные, но не инициализированные локальные переменные оцениваются в nil:

    defined? foo
    #=> nil
    
    if false then foo = 42 end
    
    defined? foo
    #=> 'local-variable'
    
    foo
    #=> nil
    
  • неопределенные переменные экземпляра оцениваются в nil и генерируют предупреждение:

    defined? @foo
    #=> nil
    
    @foo
    #=> nil
    # warning: instance variable `@foo' not initialized
    
  • неопределенные переменные класса raise a NameError:

    defined? @@foo
    #=> nil
    
    @@foo
    # uninitialized class variable @@foo (NameError)
    
  • неопределенные константы raise a NameError:

    defined? FOO
    #=> nil
    
    FOO
    # uninitialized constant FOO (NameError)
    
0 голосов
/ 06 февраля 2019

Вы присваиваете значение локальной переменной при первом присваивании:

local = 1
local1 + local # NameError: undefined local variable or method `local1' for main:Object

Переменные класса похожи, если вы используете их без инициализации, вы получите ошибку:

class A
  @@a
end  
# NameError: uninitialized class variable @@a in A

Экземпляр классапеременные и переменные класса по умолчанию nil:

class A
  def self.a
    @a
  end  
  def a
    @a
  end  
end  

> A.a
#=> nil
> A.new.a
#=> nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...