在阅读之前。我是Ruby的新手,我试图通过实例和练习来学习。 我找到了一些运动,但我坚持了下来。
编写一个模拟酒店房间的Ruby程序。用户将进入,签发机票,退出当然付款。
基本要求的方案:
如果有足够的房间,用户可以进入酒店。 用户可以退出,如果付款 已经在酒店的用户在退出前无法再次进入。 这就是我做的:
class Hotel < User
attr_accessor :room
def initialize(room)
@room = []
super(name)
end
def on_entry
if room.count < 20
new_array = []
rooms.each do |space|
new_array << space
print("You just rent a room!")
end
else
print("Thank you for coming!")
end
end
def on_exit
if name.exist
user.time_dindong
else
puts "Please, pay for room first"
end
end
end
class User
attr_accessor :name, :id
def initialize(name, id)
@name = name
@id = id
end
end
我收到错误:Hotel.rb:1:in'':uninitialized constant User(NameError) 谁能告诉我我做错了什么。如果还有其他办法吗?
感谢您的时间。
答案 0 :(得分:1)
您需要在酒店课程
之前声明用户班级class User
attr_accessor :name, :id
def initialize(name, id)
@name = name
@id = id
end
end
class Hotel < User
# ...
而且我认为你不需要将用户扩展到酒店。必须是:
class Hotel
# ..
答案 1 :(得分:0)
问题在于您将酒店定义为扩展用户,但随后定义用户酒店后。用户应在酒店之前定义。
(看到Hotel继承用户有点奇怪,但我没有检查其余代码的完整性。)