Постоянное назначение Rails - PullRequest
0 голосов
/ 27 сентября 2019

Я читаю рельсы autoloading_and_reloading_constants .В разделе 2.2 Class and Module Definitions are Constant Assignments

я понял ту часть, где говорится, что

class Project < ApplicationRecord
end 

оценивается как

Project = Class.new(ApplicationRecord)

, но не смог понять этоpart

Таким образом, когда кто-то неофициально говорит «класс String», это действительно означает: объект класса хранится в константе с именем «String» в объекте класса, хранящемся в константе Object.В противном случае строка является обычной константой Ruby, и к ней применимо все, что связано с такими константами, как алгоритмы разрешения.

Может кто-нибудь кратко объяснить это?

1 Ответ

2 голосов
/ 27 сентября 2019

Это означает более или менее:

  • каждый класс является объектом (как и все в Ruby), его класс равен Class
  • объектам класса присвоены константы, напримерString или User
  • String, поскольку языковая конструкция - это просто константа, больше ничего, случается, что она прикрепила объект класса, описывающий текстовые данные
  • все, что связано с загрузкойконстанты относятся к классам загрузки, прикрепленным к этим константам
...