2011-11-21 8 views
1

모듈의 정의가 서로 다른 3 개의 파일로 구성되어 있으며 사용자 상호 작용에 따라 동적으로로드하려고합니다. Kernel.load() 메서드를 사용하면 특정 파일이 처음로드 될 때만 성공적으로 작동합니다. 누구든지 파일로드를하기 위해 어떤 방법을 사용해야하는지, 이전에 이미로드되었는지 여부와 관련해서는 안되는 지 알고 있습니까?Rhomobile은 이전에로드 된 모듈을 다시로드합니다

이 모듈에는 응용 프로그램의 다른 부분에서 사용되는 몇 가지 상수가 포함되어 있습니다. 사용자 선택에 따라, 해당 상수에 대한 특정 값을 갖는 하나의 구체적인 모듈이 적재되어 적절한 값을 가져야합니다.

답변

0

대부분의 경우 사용자가 올바른 방법으로 문제를 해결하지 못하고 있습니다.

동일한 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 
+1

모듈은 응용 프로그램의 다른 부분에서 사용되는 일부 상수가 포함되어 있습니다. 사용자 선택에 따라, 해당 상수에 대한 특정 값을 갖는 하나의 구체적인 모듈이 적재되어 적절한 값을 가져야합니다. 접근 방식이 달라야한다고 생각하십니까? 예를 들어 주시겠습니까? 감사! – Pablo

+0

수정 된 답변 및 질문. –

+0

답변 해 주셔서 대단히 감사합니다. 이 경우에는 클래스 사용이 더 좋습니다. – Pablo

관련 문제