怎么给Ruby编写模块?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

如何为ruby编写模块。在python中,可以使用

# module.py
def helloworld(name):
    print "Hello, %s" % name

# main.py
import module
module.helloworld("Jim")

但是ruby呢?

提问于
用户回答回答于

例子很多:

#instance_methods.rb
module MyInstanceMethods
  def foo
    puts 'instance method foo called'
  end
end

扩展mod

#class_methods.rb
module MyClassMethods
  def bar
    puts 'class method bar called'
  end
end

mod被包括在内

require 'instance_methods.rb'

class MyClass
  include MyInstanceMethods
end

my_obj = MyClass.new
my_obj.foo #prints instance method foo called
MyClass.foo #Results into error as method is an instance method, _not_ a class method.

用户回答回答于

Ruby中的模块与Python中的模块有不同的用途。通常,使用模块来定义其他类定义中可能包含的通用方法。

但是Ruby中的模块也可以使用类似于Python的方式,只用于在某些命名空间中对方法进行分组。因此,在Ruby中的例子应该是:

# module1.rb
module Module1
  def self.helloworld(name)
    puts "Hello, #{name}"
  end
end

# main.rb
require "./module1"
Module1.helloworld("Jim")

扫码关注云+社区