我正在使用此处的帖子完成饥饿学院课程:http: //jumpstartlab.com/news/archives/2013/09/03/scheduling-six-months-of-classes
而且我可以在这里找到 EventReporter 项目:http: //tutorials.jumpstartlab.com/projects/event_reporter.html
到目前为止,我已经构建了一个简单的 CLI,它要求一个有效的命令并接受该命令的附加参数。我现在只处理加载功能,在初始化方法listfile
中设置默认变量时遇到了一些麻烦。AttendeeList
这是到目前为止的代码:
require 'csv'
class Reporter
def initialize()
@command = ''
loop()
end
#Main reporter loop
def loop
while @command != 'quit' do
printf "Enter a valid command:"
user_command_input = gets.chomp
user_input_args = []
@command = user_command_input.split(" ").first.downcase
user_input_args = user_command_input.split(" ").drop(1)
#DEBUG - puts @command
#DEBUG - puts user_input_args.count
case @command
when "load"
attendee_list = AttendeeList.new(user_input_args[0])
when "help"
puts "I would print some help here."
when "queue"
puts "I will do queue operations here."
when "find"
puts "I would find something for you and queue it here."
when "quit"
puts "Quitting Now."
break
else
puts "The command is not recognized, sorry. Try load, help, queue, or find."
end
end
end
end
class AttendeeList
def initialize(listfile = "event_attendees.csv")
puts "Loaded listfile #{listfile}"
end
end
reporter = Reporter.new
我正在测试load
不带参数运行命令,并且看到当我初始化它时,AttendeeList
它user_input_args[0]
是一个空数组[]
,据我所知,它不是零,所以我认为这就是问题所在。当我希望将 args 传递给我的新实例时,我对如何继续有点迷茫AttendeeList
。我也不想在我的 Reporter 类中包含默认逻辑,因为这违背了封装在列表中的目的。
编辑:我忘了提到初始化方法的listfile
默认值AttendeeList
是我正在谈论的参数。