你混合實例,並在您的示例類方法。 如果這真的是你想要的東西,那麼你必須與attr_reader
定義訪問:
class Test
def initialize(params)
@has_test = params[:has_test]
@limit_test = params[:limit_test]
end
attr_reader :has_test
attr_reader :limit_test
def self.method1(params)
obj = Test.new(params)
p obj.has_test
p obj.limit_test
end
end
Test.method1(has_test: 1, limit_test: 3)
它實例/類方法是錯誤的,那麼這個例子可以幫助你:
class Test
def initialize(params)
@has_test = params[:has_test]
@limit_test = params[:limit_test]
end
def method1()
p @has_test
p @limit_test
end
end
obj = Test.new(has_test: 1, limit_test: 3)
obj.method1
如果您還像第一個代碼中那樣定義訪問器,那麼您可以再次從課程外部訪問。
以防萬一你不希望一個讀者,也看到Access instance variable from outside the class
@lurker雖然在技術上''@@是正確的語法的大部分時間,因爲它似乎在這種情況下,類的實例變量會用於代替類變量,儘管我同意他似乎只是錯誤的自我,並希望訪問實例本身的實例變量。 – engineersmnky
@engineersmnky是的,我同意。直到我發表評論之後,我才注意到這一點。 – lurker
Ruby使用'#'來註釋,而不是''''。 –