hakeの日記

Windows環境でプログラミングの勉強をしています。

Module

Rubyの勉強

昨日のLOGOマネスクリプトは肝心のタートルの動作制御についての記述がソースの中にあるので使い勝手が悪い、何とかならんかと思っていたらModuleを思い出した。これだとメソッドdrawだけ別ファイルに追い出せます。
Moduleファイルmoduletest.rbを用意して

# ファイルの場所
#   F:/ruby_RDE/moduletest.rb
module MyModule
  def add(n)
    n + 1
  end
end

スクリプト内でincludeすれば

require "F:/ruby_RDE/moduletest.rb"
include MyModule

p add(1) # => 2

任意のメソッドだけ別ファイルにできました。
ちなみにrequireに書くファイルパスの部分を変数にしても動作しました。ということはアプリ動作中に任意のモジュールファイルを選択して読むなんてことができますね。


と思ったら、require fileA → require fileB → require fileA
したら最後のfileAのincludeが有効にならない。(requireは最初の1回のみ有効)
まぁload fileAすれば大丈夫なんだけどメモリ管理?とかで問題にならないのだろうか。。。