Контекст необходимых файлов в пределах одного драгоценного камня Ruby - PullRequest
0 голосов
/ 14 декабря 2018

Так что это, вероятно, действительно просто, но я не могу найти нужные слова для Google это сам.Я только начал изучать Ruby на SoloLearn, и одним из их примеров была очень простая RPG-игра (на самом деле просто одиночный бой), и она казалась идеальным тренировочным проектом.У меня есть самоцвет, структурированный так:

Game/
     game.gemspec
     lib/
         game.rb
         chars.rb

game.rb имеет класс Player, который должен быть суперклассом каждого класса символов (типы символов для неоднозначности) в chars.rb.Могут ли классы в chars.rb наследовать от классов в game.rb?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Вы можете использовать комбинацию require и require_relative для импорта кода из других файлов в вашей кодовой базе или из других установленных вами библиотек.Вы можете использовать эти методы наряду с использованием папок для упорядочения кода.

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

https://github.com/jaydorsey/game

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

В документах ruby ​​более подробно описаны оба метода:

http://ruby -doc.org / ядро-2.5.3 / Kernel.html # метод-я-требуется

0 голосов
/ 15 декабря 2018

Ruby использует require для импорта других файлов.

Некоторые концепции, чтобы лучше это понять,

  • require импортирует другой файл Ruby.
  • КогдаRuby импортирует файл с кодом, этот файл выполняется построчно.
  • Когда выполняется определение класса, класс добавляется в глобальное пространство имен.
  • Таким образом, после импорта файла, который определяет ваш класс, любой файл может получить доступ к вашему классу, даже если он не импортирует этот файл напрямую.Чтобы избежать неприятных сюрпризов, лучше всего повторять оператор require каждый раз, когда вы используете класс, или полагаться на автозагрузку, как, например, делает Rails.Ruby отслеживает все импортированные файлы, поэтому даже если вы импортируете их более одного раза, он не выполнит их более одного раза.

Интересный факт: вы можете напечатать имя всех импортированных файлов, используя

puts $"
...