2017-10-30 7 views
0

私はクラスを作成しています。私はROLL_CALLという名前のハッシュからデータを取得しています。 allメソッドは、Teamオブジェクトの配列を返す必要があります。Rubyのクラスの未定義メソッド

require_relative "./team_data" 
class Team 
    attr_reader :name 
    def intialize (name) 
    @name = name 
    def all 
     all_teams = [] 
     TeamData::ROLL_CALL.each do |team, info| 
     all_teams << Team.new(team) 
     end 
     all_teams 
    end 
    end 
end 

私はTeam.allを呼び出すしようとすると、私はallのための未定義のメソッドを取得します。

+4

本当にあなたは 'initialize'の中に' all'を追加したいのですか、それとも入力ミスですか? –

+0

質問に特定のエラーを入れてください – Cyzanfar

答えて

0

コードが正しく構成されていません。そのdef allはトップレベルにあり、クラススタイルのメソッドとして宣言する必要があります。それはmapがあなたのために何をするかを正確だとして

require_relative "./team_data" 

class Team 
    def self.all 
    TeamData::ROLL_CALL.map do |team, info| 
     Team.new(team) 
    end 
    end 

    attr_reader :name 

    def intialize (name) 
    @name = name 
    end 
end 

使用map代わりに一時配列を作成し、最後にそれを返すことだけeachとそれに物事を妨害する、:いくつかの他のものの価値の固定もあります。

+0

これは未定義のメソッドを削除しましたが、Team.allを実行しようとすると別のエラーが発生します。それは私に議論の数が間違っていることを伝えています(与えられた1、期待された0)。申し訳ありませんが、これは単純な質問でも、まだRubyの相対的な初心者です。 – Gingervitus

+0

@Gingervitus新しいことは間違いありませんが、あなたの質問やここで定義されている方法とは異なる方法でメソッドを使用しているようです。これは引数がないので、 'Team.all(1)'を呼び出す場合、それはそのようにエラーになります。何をすべきかわからない場合は、関連する詳細で新しい質問を開きます。 – tadman

関連する問題