ここの投稿を使用して、ハングリー アカデミーのカリキュラムをフォローしています。
そして、私はここにある 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]
空の配列[]
であることがわかりますが、これは私の理解では nil ではないので、それが問題だと思います。の新しいインスタンスに引数を渡す必要がある場合でも、続行する方法について少し迷っていますAttendeeList
。また、デフォルトのロジックを Reporter クラスに含めない方がよいと思います。これは、リスト内にカプセル化するという目的に反するからです。
listfile
編集: 初期化メソッドのデフォルトは、AttendeeList
私が話している引数であることを忘れていました。