簡體   English   中英

從 class 方法調用實例方法 - Ruby

[英]Calling an instance method from a class method - Ruby

所以我有這個 class:

class MyClass
@@variable = 9
    def initialize
        @@variable -= 1
    end 
    def self.tracker
        puts @@variable
        if @@variable <9
            puts "#{action}"
        end
    end

    def action
        puts "The number is less than 9!"
    end    
end 

當我嘗試調用 class 方法時:

MyClass.tracker

我不斷收到此錯誤:

`tracker': undefined local variable or method `action' for MyClass:Class (NameError)

是否不能從 class 方法調用實例方法,反之亦然? 難道我做錯了什么?

謝謝!

為了調用實例方法,您需要創建 object 的實例。 在 ruby 中調用“new”會創建一個 class 的實例。

您可以更改此行

puts "#{action}"

對此:

puts "#{new.action}"

.new內部的 .new 將創建您所在的 class 的新實例。它還將運行您的initialize並將@@variable減一。 現在編寫 class 的方式, if @@variable <9 ,除非您在共享的代碼之外創建 class 的實例,否則我們永遠不會過去。

總的來說,這是一個非常奇怪的 class。 像這樣使用 class 變量並不常見。 創建 class 的實例更為常見,使用實例變量/方法來容納您的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM