独学Ruby -基礎④-

tanoshiiruby.github.io

Contents


モジュール

モジュールの提供するメソッドは「モジュール名.メソッド名」で参照。

外部に公開するために、module_functionを使う。

module MyModule
    # 定数の定義
    Version = "1.0"
    
    def hello(name)
        print "Hello" , name, "\n"
    end
    
    # helloモジュールをモジュール関数として公開する
    module_function :hello
    
end

使用方法1

  • モジュール名:: でアクセス
require_relative "module_sample"

p MyModule::Version
MyModule::hello("Hoge")

使用方法2

  • includeする
require_relative "module_sample"

include MyModule
p Version
hello("Hoge")

Mix-inによる機能提供

モジュールをクラスに混ぜ合わせることをMix-inという。

クラス定義の中でincludeするとモジュールを取り込むことができる。

module MyModule
    # 提供したいメソッド
    def hello()
        print "Hello", "\n"
    end
end

class MyClass1
    # モジュールを取り込む
    include MyModule
end

class MyClass2
    # モジュールを取り込む
    include MyModule
end

呼出し元。

require_relative "mix-in_sample"

obj1 = MyClass1.new()
obj1.hello()

obj2 = MyClass2.new()
obj2.hello()

以上。