如何包含模块的常量和变量?

nev*_*ame 7 ruby

我有一个具有常量和变量的模块.

我想知道如何在课堂上加入这些内容?

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)

这可能吗?

kwe*_*rle 9

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)


taw*_*taw 3

完全做你想做的事是不可能的。实例变量严格是针对每个对象的。

这恰好符合您的预期,但@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)