2016-01-28 2 views
-1

Привет, я новичок в рубине и недавно начал изучать то же. Я написал ниже рубиновую программу, которая отлично работает.Как вызвать методы из разных классов в ruby ​​

Но эта программа написана в одном файле. Я хочу поместить каждый класс в другой файл и использовать еще один файл для выполнения all.ie, как в java. [Один из основных способов запуска программы] Как я могу запустить эту программу следующим образом.

Когда я попытался сохранить каждый класс в отдельном файле и попытался выполнить то же самое, он начал давать ошибки, такие как метод не найден.

class Vehical 
    attr_accessor :odometer  
    attr_accessor :gas_used  
    def accelrate 
    puts " Floor It" 
    end 

    def sound_horn 
    puts "Beep! Beep!" 
    end 

    def steer 
    puts "Turn front 2 wheels" 
    end 

    def mileage 
    @odometer /@gas_used 
    end 
end 

class Truck < Vehical 
end 

class Motercycle < Vehical 
end 


class Car < Vehical 
end  

truck = Truck.new  
truck.steer 
car = Car.new 
car.odometer = 11432 
car.gas_used = 366 
puts "Lifetime MPG:" 
puts car.mileage 
+1

"он начал давать ошибки как метод не найден." - Не говорите нам, какие ошибки были «похожими». Сообщите нам, что такое ошибки *. В сообщении об ошибке должно быть имя файла и номер строки, трассировка стека, в которой вы точно указываете, что * пошло не так, в * какой метод * в *, в строке * которого *, который был ошибочен, и т. Д. –

ответ

3

Ниже приведены несколько вариантов:

  1. Используйте require_relative, чтобы загрузить эти файлы в основной файл.

    require_relative "vehical" 
    require_relative "truck" 
    require_relative "motor_cycle" 
    require_relative "car" 
    
  2. Использование $:.unshift File.dirname(__FILE__) в главном файле, чтобы добавить его местоположение в Рубиновый путь нагрузки и использовать require "dependent-file-name-without-extension" в главном файле.

    $:.unshift File.dirname(__FILE__) 
    require "vehical" 
    require "truck" 
    require "motor_cycle" 
    require "car" 
    
  3. Использование -I <folder> при запуске программы. Пример: ruby -I . main.rb

    -Idirectory указать $ каталог LOAD_PATH (может быть использован более чем один раз)

Смежные вопросы