Какая переменная определена внутри определения класса без декоратора @ или @@? - PullRequest
3 голосов
/ 30 ноября 2011

В Ruby такой код допустим:

class Aclass
  m = 1
end

но, говоря семантически, что будет m и как к нему обращаться?

Ответы [ 2 ]

8 голосов
/ 30 ноября 2011

m - это просто локальная переменная. Доступ к нему можно получить только из определения класса. Например, его можно использовать для начальной загрузки класса, но к нему нельзя получить доступ из других источников.

Например:

class Aclass

  m=1
  puts "m is #{m}"

end

Этот код будет запускаться только один раз, когда вам потребуется файл, содержащий этот класс. Это несколько похоже на статические блоки инициализации Java .

2 голосов
/ 30 ноября 2011

Я не уверен, что такое семантический термин для m, но это просто обычная переменная в области видимости класса.Вы не сможете получить к нему доступ вне класса (даже в методах, определенных в классе).

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