我是ruby和一般编程的新手,我遇到一些问题,让方法可以从另一个类开始工作。我试图开始工作的方法是new_employee,如果你运行business.rb,它的选项2 business.rb文件包含类Business
class Business
attr_accessor :name
def run
self.welcome
end
def welcome
while true
puts "Welcome to Team Green Turf! What do you want to do today?"
puts "1. Add new customer"
puts "2. Add new employee"
puts "3. View current revenue"
choice = gets.chomp.to_i
case choice
when 1
puts "hello!"
when 2
puts new_employee()
when 3
exit
end
end
end
end
team_green_turf = Business.new
team_green_turf.run
employees.rb文件
require_relative 'business'
class Employees
attr_accessor :name
def initialize(name)
@name = name
end
def new_employee(name)
puts "What is the employees name?"
name = gets.chomp
e1 = Employees.new(name)
end
end
答案 0 :(得分:1)
主要有两个想法:
business.rb
文件完全加载之前在employees.rb
的底部执行代码,因此将不会定义Employee
类及其方法。您可以通过多种不同方式解决此问题,但我建议将business.rb
的最后两行移至名为run.rb
的文件中,并将require_relative 'business'
放在run.rb
的顶部,并将require_relative 'employees'
置于business.rb
的顶部,并从require_relative 'business'
的顶部删除employees.rb
。 (Employees
类实际上并不使用或依赖Business
类,因此要求它是没有意义的。)Business
类调用该函数,您可以编写Employees.new_employee
。您还需要将new_employee
更改为类方法,方法是在定义时将self.
放在其名称前面:def self.new_employee(name)...
。