Синтаксический вопрос - PullRequest
       2

Синтаксический вопрос

1 голос
/ 15 февраля 2010

Что это за переменные?

Class User
  TOTO = 1
  TITI = 2
end

User::TOTO # 1
User::TITI # 2

есть ссылки на документ? Спасибо,

Ответы [ 2 ]

9 голосов
/ 15 февраля 2010

TOTO и TITI определены как константы со значениями 1 и 2 соответственно в классе User.

Вы можете получить доступ к этим константам из самого пользовательского класса, просто ссылаясь на них как TOTO и TITI

Но если вы хотите получить доступ к этим константам извне пользовательского класса, тогда вы должны также использовать имя класса, что, как я полагаю, то, что вы делаете, то есть User::TOTO и User:TITI

Вот маленький урок по константам .

2 голосов
/ 15 февраля 2010

Class должен быть в нижнем регистре, для одного.

class User
  TOTO = 1
  TITI = 2
end

User::TOTO # 1
User::TITI # 2

User, TOTO и TITI - все константы, причем User ссылаются на класс, а TOTO и TITI хранятся в пространстве имен этого класса и оба ссылаются на целые числа.

В ruby ​​у вас есть несколько типов переменных, каждый из которых идентифицируется начальным символом.

  • локальные переменные начинаются со строчной буквы и доступны только в той области, в которой они впервые определены.
  • константы начинаются с заглавной буквы и доступны внутри и через пространство имен (класс или модуль), в котором они определены.
  • переменные экземпляра начинаются с одного знака @ и доступны всякий раз, когда self оценивает экземпляр, в котором была определена переменная экземпляра (обычно в методах экземпляра)
  • переменные класса начинаются со знака @@ и доступны, когда они находятся внутри класса, который их впервые определил, или любого из его подклассов, или любого из их экземпляров.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...