0

ここの投稿を使用して、ハングリー アカデミーのカリキュラムをフォローしています

そして、私はここにある 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引数なしでコマンドを実行してテストしていますが、初期化するAttendeeListuser_input_args[0]空の配列[]であることがわかりますが、これは私の理解では nil ではないので、それが問題だと思います。の新しいインスタンスに引数を渡す必要がある場合でも、続行する方法について少し迷っていますAttendeeList。また、デフォルトのロジックを Reporter クラスに含めない方がよいと思います。これは、リスト内にカプセル化するという目的に反するからです。

listfile編集: 初期化メソッドのデフォルトは、AttendeeList私が話している引数であることを忘れていました。

4

1 に答える 1