【Ruby】モジュール関数の作成方法(module_functionの使い方)
- 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/01/26
- メディア: 大型本
- 購入: 21人 クリック: 356回
- この商品を含むブログ (124件) を見る
内容が濃すぎてぜんぜん進まない。。。
モジュール関数とは
モジュールのプライベートメソッド。
Rubyではプライベートというのは、「見える範囲が小さい」の概念ではない。
モジュールのインスタンスメソッドをプライベート化することで、
レシーバ無しでメソッドを呼び出せる。
→オブジェクトの状態を気にしない「関数」としてとらえることが出来る。
だから、モジュール関数の中でselfを使うことは避ける。
selfの値によって動作が変わることは「関数」の意に沿わないから。
module_functionメソッドにて、
・インスタンスメソッドのprivate化(関数化)
・publicクラスメソッドの作成
の両方が実行される
module Kokugo def greeting p "hello" end module_function(:greeting) end class Hoge include Kokugo def gre greeting #<= privateインスタンスメソッドの実行 #module_functionメソッドによりインスタンスメソッドはprivate化(関数化)されるためエラーとなる self.greeting end end Kokugo.greeting #<= publicクラスメソッドの実行 Hoge.new.gre
なるほど。