이것이 작동하지 않는 이유를 말해 줄 수 있습니까?class methosd (ruby)
아래 코드는 student1 & student2를 올바르게 출력하지만 student3에서 작동하는 클래스 메서드를 가져올 수 없습니다.
나는 종 속성이 "Human"인 클래스 메소드 .create_with_species
을 할당하려고합니다.
그러나 프로그램을 실행하면 "로컬 변수 또는 메서드 sex
이 정의되지 않았습니다."라는 오류가 발생합니다. 나는 초보자이고 내가 뭘 잘못했는지 알 수 없다!
Initialize 메서드에서 "sex"를 식별 했으므로 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 –
왜 그렇게 생각하지 않을지 모르겠군요. 일하지 마라. 이 클래스 메소드는 필요한 것들을 인수로 가져온 다음 특정 인스턴스에 설정합니다. –