我有一个具有常量和变量的模块.
我想知道如何在课堂上加入这些内容?
module Software
VAR = 'hejsan'
def exit
@text = "exited"
puts @text
end
end
class Windows
extend Software
def self.start
exit
puts VAR
puts @text
end
end
Windows.start
Run Code Online (Sandbox Code Playgroud)
这可能吗?
Ruby 1.9.3:
module Software
VAR = 'hejsan'
module ClassMethods
def exit
@text = "exited"
puts @text
end
end
module InstanceMethods
end
def self.included(receiver)
receiver.extend ClassMethods
receiver.send :include, InstanceMethods
end
end
class Windows
include Software
def self.start
exit
puts VAR
puts @text
end
end
Windows.start
Run Code Online (Sandbox Code Playgroud)
在IRB:
exited
hejsan
exited
Run Code Online (Sandbox Code Playgroud)
完全做你想做的事是不可能的。实例变量严格是针对每个对象的。
这恰好符合您的预期,但@text设置为Windowsnot Software。
module Software
VAR = 'hejsan'
def exit
@text = "exited"
puts @text
end
end
class Windows
class <<self
include Software
def start
exit
puts VAR
puts @text
end
end
end
Windows.start
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7472 次 |
| 最近记录: |