[英]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.