1
我在3個不同的文件中有不同的模塊定義,我想根據用戶交互動態加載它們。第一次加載某個文件時,使用Kernel.load()
方法僅對我成功運行。有誰知道我應該使用哪種方法來始終加載文件,而不是關於它之前是否已經加載過?Rhomobile重新加載以前加載的模塊
該模塊包含一些在應用程序的其他部分中使用的常量。根據用戶的選擇,應該加載一個具有該常數特定值的具體模塊,以便它們具有適當的值。
我在3個不同的文件中有不同的模塊定義,我想根據用戶交互動態加載它們。第一次加載某個文件時,使用Kernel.load()
方法僅對我成功運行。有誰知道我應該使用哪種方法來始終加載文件,而不是關於它之前是否已經加載過?Rhomobile重新加載以前加載的模塊
該模塊包含一些在應用程序的其他部分中使用的常量。根據用戶的選擇,應該加載一個具有該常數特定值的具體模塊,以便它們具有適當的值。
很可能,您沒有采取正確的方法解決您的問題。
爲什麼要定義相同的模塊,如果您可以使用相同的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)
而不是使用常量你應該使用靜態方法或靜態方法與你的「常量」的值返回一個散列。常量不是很實用。
既然你要使用的模塊來存儲數據,而不是邏輯,也許你應該使用類:
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