대부분의 경우 사용자가 올바른 방법으로 문제를 해결하지 못하고 있습니다.
동일한 API로 여러 모듈을 정의하고 동적으로 원하는 모듈을 사용할 수 있다면 왜 다른 모듈을 정의해야합니까?
모듈로 무엇을하고 있습니까?
믹스 인으로 사용하고 있습니까?
if condition
object.extend Module1
else
object.extend Module2
end
object.method(bla,blabla)
방금 정적 메서드로 메서드를 호출하고 있습니까? 대신 당신이 정적 메소드 또는 "상수"의 값을 갖는 해시를 반환하는 정적 인 방법을 사용한다 상수를 사용
module = if condition
Module1
else
Module2
end
module.method(bla, bla bla)
. 상수는 매우 pratical하지 않습니다.
아마 대신 클래스를 사용해야합니다, 대신 논리의 데이터를 저장하기 위해 모듈을 사용할 것을 감안할 때 :
class Options
attr_reader :constant_1,:constant_2
end
class Options1 < Options
def initialize
@constant_1="value1"
@constant_2="value2"
end
end
class Options2 < Options
def initialize
@constant_1="value3"
@constant_2="value4"
end
end
options= condition ? Options1.new : Options2.new
options.constant_1 # => intended value
모듈은 응용 프로그램의 다른 부분에서 사용되는 일부 상수가 포함되어 있습니다. 사용자 선택에 따라, 해당 상수에 대한 특정 값을 갖는 하나의 구체적인 모듈이 적재되어 적절한 값을 가져야합니다. 접근 방식이 달라야한다고 생각하십니까? 예를 들어 주시겠습니까? 감사! – Pablo
수정 된 답변 및 질문. –
답변 해 주셔서 대단히 감사합니다. 이 경우에는 클래스 사용이 더 좋습니다. – Pablo