9-1-2 オリジナルのモジュールを定義して色々な方法で使ってみよう
インスタンスが生成できないことを確認するプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule1.rb
で保存します。
module ModuleSample def sample_method p 'call sample_method.' end end instance = ModuleSample.new
インスタンスが生成できないことを確認するプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に、new
メソッドが未定義であるNoMethodError
が表示されます。
$ ruby module1.rb module1.rb:7:in `<main>': undefined method `new' for ModuleSample:Module (NoMethodError)
モジュールが継承できないことを確認するプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule2.rb
で保存します。
module ModuleSample def sample_method p 'call sample_method.' end end module ModuleInheritSample < ModuleSample end
モジュールが継承できないことを確認するプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に、文法エラーが表示されます。
$ ruby module2.rb module2.rb:7: syntax error, unexpected '<' module ModuleInheritSample < ModuleSample
モジュールメソッドを定義して使うプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule3.rb
で保存します。
module ModuleSample def self.sample_method p 'call sample_method.' end class << self def sample_method2 p 'call sample_method2.' end end end ModuleSample.sample_method ModuleSample.sample_method2
モジュールメソッドを定義して使うプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に"call sample_method."
、"call sample_method2."
が表示されます。
$ ruby module3.rb "call sample_method." "call sample_method2."
モジュールメソッドを別の方法で定義して使うプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule4.rb
で保存します。
module ModuleSample def sample_method p 'call sample_method.' end module_function :sample_method end ModuleSample.sample_method
モジュールメソッドを別の方法で定義して使うプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に"call sample_method."
が表示されます。
$ ruby module4.rb
"call sample_method."
クラスからモジュールをinclude
して使うプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule5.rb
で保存します。
module ModuleSample def sample_method p 'call sample_method.' end end class IncludeModleSample include ModuleSample end instance = IncludeModleSample.new instance.sample_method
クラスからモジュールをinclude
して使うプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に"call sample_method."
が表示されます。
$ ruby module5.rb
"call sample_method."
クラスからモジュールをexclude
して使うプログラムを記述する
以下のようなプログラムを記述し、ファイル名をmodule6.rb
で保存します。
module ModuleSample def sample_method p 'call sample_method.' end end class ExtendModleSample extend ModuleSample end ExtendModleSample.sample_method
クラスからモジュールをexclude
して使うプログラムを実行する
コマンドライン上でファイルを指定し実行します。実行結果に"call sample_method."
が表示されます。
$ ruby module6.rb
"call sample_method."