class Collie
def speak
puts dog_generic
end
end
class Greyhound
def speak
puts dog_generic
end
end
class Labrador
def speak
puts dog_generic
end
end
dog_generic = "Woof"
chep = Collie.new
wrex = Collie.new
speedy = Greyhound.new
faithful = Labrador.new
chep.speak #=> Woof
wrex.speak #=> Woof
speedy.speak #=> Woof
faithful.speak #=> Woof
나는 "우프"를 반환하는 마지막 3 가지 방법을 원합니다. 그러나이 코드는 정의되지 않은 변수 dog_generic 오류를 호출합니다. 이것은 전역 변수조차도 객체에 사용할 수 없기 때문인 것으로 보인다. dog_generic
의 모든 인스턴스를 @@dog_generic
으로 변경하면 작동하지만 거의 작동하지 않으며 그 작업만으로는 내가 잘못하고 있다고 생각할 수 없습니다.여러 객체간에 하나의 변수 공유하기
여러 개체간에 하나의 변수를 공유하려면 어떻게해야합니까?
아니요. 매개 변수로 모든 단일 개체에 "우위"문자열을 전달하고 싶지 않습니다.
PHP에서 이것을하고 있었습니까? 저는'dog'라는 이름의 클래스 하나를 만들고 변수'dog_generic'과 메서드'speak'를 포함 시켰습니다. 그런 다음'Collie','Greyhound'와'Labrador' 클래스를 새로 만들 것입니다. Dog에서 상속받은 것. 후회 루비에서이 작업을 수행하는 방법을 모르지만, 실마리를 제공하기를 바랍니다. –
'dog_generic'의 모든 인스턴스 앞에'$ dog_generic'처럼 달러 기호를 붙이면 원하는 동작을 얻을 수 있습니다. perimosocordiae의 대답에 따라 상속을 사용하는 것이 더 좋은 방법입니다. –
상수'DOG_GENERIC = "Woof"를 만들 수 있습니다. – mwoods79