2017-11-20 11 views
0

Ruby for CodeAcademyのチュートリアルthisを使って作業しようとしています。次のコードは私にエラーを与えているRubyの初期化されていない定数

「初期化されていない定数一覧::タスク(NameError)to_do.rbから :2:メインの」

が、私はこれはListクラスがされていないに関連する可能性があることを理解Taskクラスにアクセスすることはできますが、どこが破壊されるのか分かりません。コードは以下の通りです。あなたはこのライン

my_list.add(Task.new('Make Breakfast')) 

Taskが定義されていない実行瞬間

#list class 

    class List 
    attr_reader :all_tasks 
    if __FILE__ == $PROGRAM_NAME 
     my_list = List.new 
     puts 'You have created a new list' 
     my_list.add(Task.new('Make Breakfast')) 
     puts 'You have added a task to the Todo List' 
    end 

    def initialize 
    @all_tasks = [] 
    end 

def add(task) 
    @all_tasks << task 
end 


end 


#class task 

class Task 
    attr_reader :description 

    def task_item(desription) 
    @new_item = description 
    end 
end 
+0

エラートレースはありますか? – alseether

+0

'__FILE__ == $ PROGRAM_NAME'です。これをクラスの外に移動するか、メソッドを呼び出します。これが真と評価されると、それは実行され、まだ定義されていないタスクにアクセスしようとします。 'initialize'からこのメソッドを呼び出すことは良い習慣です。 – Sairam

答えて

1

。それは数行後に起こります。

TaskListクラスの定義を入れ替えてください。

+0

リストの初期化子と 'add'のどちらも定義されていません。これはOPがすぐに発見するでしょう。このスクリプトは、Listクラスから抽出し、ファイルの最後に移動する必要があります。 –

1

コマンドラインからスクリプトとして実行すると、宣言の順序が重要になります。リストの上にあるタスクの宣言を移動すると、問題のエラーが修正されることがわかります。

関連する問題