所以我从youtube视频https://www.youtube.com/watch?v=V9OySOWLYIg
复制了这段代码他在他的视频中运行它没有问题,但是当我运行它时,它给了我一个错误
C:/rails/11.rb:17:在create': Unknown hero (RuntimeError)
from C:/rails/11.rb:6:in
块初始化'
来自C:/rails/11.rb:6:在times'
from C:/rails/11.rb:6:in
初始化'
来自C:/rails/11.rb:22:new'
from C:/rails/11.rb:22:in
'
class Party
attr_reader :members
def initialize(number, occupation)
@members = []
number.times { members << create(occupation)}
end
end
class PartyFactory < Party
def create(occupation)
if occupation == :warrior
Warrior.new
elseif occupation == :mage
Mage.new
else
raise "Unknown hero"
end
end
end
party = PartyFactory.new(2, :mage)
我的另一个问题是,如果Mage.new,我做Mage.new(“fred”),为mage设置名称,“fred”部分最终会在哪里?
抱歉,我是Ruby的新手,无法找到一个工作示例来了解如何设置工厂方法。
答案 0 :(得分:2)
将elseif
更改为elsif
(不含第二个e)。
然后确保初始化Mage
和Warrior
课程,如果不这样做,则会NameError
。