是否有理由在Ruby模塊中不使用@var或@@ var,而不是將其用作類中的混合模塊?我已經嘗試過了,兩個變量的結果都是相同的(簡單的模塊基本上是一個@var或@@ var的getter和setter)。我還沒有找到一個例子或解釋說,一個模塊可以使用一些可變的狀態。它幾乎可以在java中用作單例。Ruby:Ruby模塊中的@@ var或@var?
我發現了一段全部使用@@ vars的代碼,它從來沒有在任何其他類中包含/擴展 - 所以基本上開發人員使用該模塊來保存某些可能會更新的狀態,但希望所有消費者的模塊在任何給定的時間看到相同的狀態,我想我可以看到一些情況下,這將是有價值的,但因爲我從來沒有見過任何記錄的情況下,我發現它很奇怪。
無論如何,在模塊上下文中,實例@var與'class'@@ var是否有區別?
編輯:
所以我嘗試了更多。所以我上面的問題是假設沒有使用mixin。這基本上說,有一個類變量的所有.....模塊的一個實例(有點像一個單身人士),或者你有一個實例變量共享所有...模塊的一個實例,所以使用爲相同的行爲狀態結果。然而,我做了一個實例方法,它基本上是一個實例getter,與我的模塊方法getter一起,並在類中進行了混合。在@@ var的情況下,單個模塊實例和所有類共享它設置的值。使用@var,單個「模塊實例」擁有自己的值,然後每個爲mixin實例方法設置@var的類實例都擁有自己的@var。
我想這是有道理的。
Downvoter,評論?我看不出這個答案沒有錯。 – fotanus 2013-05-14 11:38:43
@fotanus感謝您的評論。 – sawa 2013-05-14 11:53:44