0
두 클래스가 있습니다. 나는 그것들을 네임 스페이스하고 싶다. 또한 공유하는 기능이 약간 있습니다. 나는 다음과 같이한다 :모듈 내의 클래스에 모듈 포함
module Talker
def say_bye
puts 'bye'
end
class Bob
include Talker
def say_yo
puts 'yo'
end
end
class Tom
include Talker
def say_hello
puts 'hello'
end
end
end
이들은 모두 유효한 메서드 호출이다.
Talker::Bob.new.say_yo
Talker::Bob.new.say_bye
Talker::Tom.new.say_hello
Talker::Tom.new.say_bye
내가 들었다 ".이 include
다시 Bob
를 포함하는 것입니다 당신은 Talker
를 포함하는 클래스를 시작하기 전에 Talker
모듈을 닫아야합니다." 예기치 않은 루비 동작을 초래하거나 뭔가 금기시하는 뭔가를하고 있다면 나에게 설명 할 수 있습니까? 이 모듈을 그 모듈 내의 클래스 내부에서 포함시키는 것은 나쁜 습관입니까? 이 패턴에 대한 비판은 무엇일까요? 여기에 상속을 사용해야합니까?
'Bob.new.say_yo' 등은 (주 환경에서) 유효합니까? – sawa
귀하의 예에서는 오류가 발생하지 않습니다 – mdesantis
수정 됨 : 클래스 앞에 네임 스페이스가 없기 때문에 호출이 작동하지 않았습니다. 문제는 "왜 작동하지 않는가"또는 "왜 오류입니까?"가 아닙니다. 그것은 효과적이고 오류없이 작동합니다. 질문은 A)이 작업을해도 괜찮습니까? 그리고 B) 제가 장면 뒤에서 모르는 나쁜 일을하고 있습니까? –