代码之家  ›  专栏  ›  技术社区  ›  Jamal Abdul Nasir

ruby中的模块

  •  1
  • Jamal Abdul Nasir  · 技术社区  · 16 年前
    
    module Hints
     module Designer
      def message
       "Hello, World!"
      end
     end
    end
    
    p Hints::Designer.message
    
    
    

    提示::D的未定义方法“message”esigner:Module (命名者)

    3 回复  |  直到 16 年前
        1
  •  7
  •   Kevin Sylvestre    16 年前

    您需要做的是将消息定义为类方法(而不是实例方法)。尝试:

    module Hints
     module Designer
      def self.message
       "Hello, World!"
      end
     end
    end
    
    puts Hints::Designer.message
    

    如果要对模块使用实例方法,则必须使用模块和任何给定的约束来扩展对象(请参见 http://ruby-doc.org/core/classes/Module.html ).

        2
  •  2
  •   mipadi    16 年前

    module Hints
     module Designer
      def self.message
       "Hello, World!"
      end
     end
    end
    

    也就是说,制造 message “类”方法(在它是实例方法之前)。这似乎有点奇怪,但请记住,模块通常用于创建mixin类,因此在这种情况下,“模块实例”是有意义的。

        3
  •  1
  •   clyfe    16 年前

    使用 p Hints::Designer.new.message

    消息是实例方法而不是类方法

    推荐文章