pac*_*hun 6 ruby singleton initialization rubymotion
我正在尝试初始化ruby中的单例.这是一些代码:
class MyClass
attr_accessor :var_i_want_to_init
# singleton
@@instance = MyClass.new
def self.instance
@@instance
end
def initialize # tried 1. initialize, 2. new, 3. self.initialize, 4. self.new
puts "I'm being initialized!"
@var_i_want_to_init = 2
end
end
Run Code Online (Sandbox Code Playgroud)
问题是从不调用initialize,因此单例永远不会初始化.我尝试命名init方法initialize,self.initialize,new和self.new.没有任何效果."我正在初始化"从未打印过,变量从未在我实例化时初始化
my_var = MyClass.instance
Run Code Online (Sandbox Code Playgroud)
如何设置单例以使其初始化?帮助赞赏,
Pachun
Kor*_*tor 18
require 'singleton'
class MyClass
include Singleton
end
Run Code Online (Sandbox Code Playgroud)
要修复代码,您可以使用以下代码:
class MyClass
attr_accessor :var_i_want_to_init
def self.instance
@@instance ||= new
end
def initialize # tried 1. initialize, 2. new, 3. self.initialize, 4. self.new
puts "I'm being initialized!"
@var_i_want_to_init = 2
end
end
Run Code Online (Sandbox Code Playgroud)
Rubymotion(1.24+)现在似乎支持使用GCD进行单例创建
class MyClass
def self.instance
Dispatch.once { @instance ||= new }
@instance
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11639 次 |
| 最近记录: |