Вызов классов из файлов - PullRequest
       3

Вызов классов из файлов

0 голосов
/ 18 января 2019

Я пишу программу, которая включает в себя два файла. Я первый файл, все, что я делаю, это инициализирую следующий файл, который включает в себя несколько классов. Я вызываю класс внизу файла, но он запускает класс вверху файла. Кстати, я бегу ruby ​​

Первый файл:

Require ‘./secondfile.rb’

newfile.Lastclass

Второй файл:

class Firstclass

end

class Lastclass

end

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Подсказка № 1. Лучше писать без .

Это зависит от каталога, из которого вы запускаете приложение.

Например, у вас есть каталог папка .И там у вас есть два файла:

file.rb

puts "I'm file.rb"

main.rb

require './file.rb'

Есливы запускаете свое приложение из папки - все в порядке:

folder$ ruby main.rb
I'm file.rb

Но если вы запустите его с высокого уровня - это будет ошибка:

folder$ cd ..
:~$ ruby folder/main.rb 
kernel_require.rb:55:in `require': cannot load such file -- ./file.rb (LoadError)

Но как писать в этом случае?

Подсказка № 2. Можно использовать специальный метод

main.rb

require "./#{__dir__}/file.rb"

Теперь все нормально во всех случаях:

~$ ruby folder/main.rb 
I'm file.rb

folder$ ruby main.rb 
I'm file.rb

Но вы можете написать это лучше.

Подсказка # 3. Вы можетеиспользуйте require_relative

main.rb

require_relative 'file.rb'

И даже лучше.

main.rb

require_relative 'file'

Руби понимает это.

~$ ruby folder/main.rb 
I'm file.rb

folder$ ruby main.rb 
I'm file.rb

Надеюсь, это поможет вам.

0 голосов
/ 18 января 2019

Классы внедряются в корневое пространство имен, если они определены. Если другой файл определяет класс, все файлы получают его:

require_relative './secondfile.rb'

Lastclass

Это не похоже на JavaScript (например, Node.js), где вы должны явно импортировать классы из других файлов. В Ruby это происходит путем манипулирования корневым пространством имен.

Еще одно замечание - обращайте особое внимание на то, какие косые черты вы используете. В вашем коде вы использовали обратную косую черту, что неверно. Вы также использовали неправильные цитаты. Часто каждый символ считается при программировании .

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