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すれば大丈夫なんだけどメモリ管理?とかで問題にならないのだろうか。。。