これはなぜ機能していないのですか?class methosd(ruby)
以下のコードはstudent1 & student2を正しく出力しますが、student3で動作するクラスメソッドを取得できません。
私がしようとしているのは、species属性= "Human"のクラスメソッド.create_with_species
を割り当てることです。
しかし、私がプログラムを実行すると、 "ローカル変数またはメソッドが定義されていません"というエラーが表示されます。私は初心者で、私が間違ったことを理解できません!
Initializeメソッドで「性別」を識別したので、私はcreate_with_species
のようなクラスメソッド内で使用できるはずです。クラスメソッドで性別を明示的に定義しようとしましたが、student.sex = sex
と同じですが、それでも同じエラーがあります。限り構文が行くよう
class Students
attr_accessor :sex, :age, :species
def self.create_with_species(species)
student = Students.new(sex,age)
student.species = species
return student
end
def initialize(sex, age)
@sex = sex
@age = age
puts "----A new student has been added----"
end
end
student1 = Students.new("Male", "21")
puts student1.sex
puts student1.age
puts
student2 = Students.new("Female", "19")
puts student2.sex
puts student2.age
student3 = Students.create_with_species("human")
ありがとう、私はそれを働かせます。しかし、今私は問題があります。私は以下の質問に受け入れた答えを見てください。その男は、(あなたの説明に基づいて)クラスメソッドを作ってはいけません... http://stackoverflow.com/questions/10366572/class-methods-ruby –
私はあなたがなぜそれが '仕事。そのクラスメソッドは、必要なものを引数として取得し、特定のインスタンスに設定します。 –