モジュールのクラス.
Object
attr(name[, public])
そのモジュールをインクルードするクラスのインスタンスに対して nameという属性とそのアクセスメソッドを定義します. アクセスメソッドの定義は次のようです.
def attr; @attr; end
省略可能な第2引数publicが指定され,その値が真であ
る場合には書き込みメソッドname=
も同時に定義され
ます.その定義は以下のようです.
def attr=(val); @attr = val; end
アクセスメソッドを再定義することで属性の挙動を変更できます. 例えば書き込みメソッドを以下のように定義することで代入された 値をプリントできます.
attr("test", TRUE) def test=(val) print("test was ", @test, "\n") print("and now is ", @test = val, "\n") end
extend_object(object)
オブジェクトにモジュールの機能を追加します.
Object#extend
の実体です.
include(module...)
指定されたモジュールの性質(メソッドや定数)を追加します.
include
は多重継承の代わりに用いられるMixinを実
現するために使われます.
method_defined?(id)
モジュールのインスタンスがidで指定されたメソッド を持っている時,真を返します.
module_function(name...)
nameで指定されたメソッドをモジュール関数にします.
モジュール関数とは通常のメソッドであると同時にモジュール(ま
たはクラス)の特異メソッドでもあるようなメソッドです.例えば
Math
モジュールで定義さ
れているメソッドがモジュール関数です
private(name...)
メソッドをprivateであると指定します.メソッドが既にprivateで ある時にはなにもしません.privateなメソッドは関数形式(レシー バを省略した形式)でしか呼び出せません.
public(name...)
メソッドをどんな形式でも呼び出せるようにします.メソッドが既 にpublicであればなにもしません.
例:
def foo() 1 end foo => 1 self.foo => 1 def bar() 2 end private :bar bar => 2 self.bar error--> private method `bar' called for "main"(Object) Module Baz def baz() 3 end module_function :baz end Baz.baz => 3 include Baz baz => 3 self.baz error--> private method `baz' called for "main"(Object)
private_class_method(name, ...)
public_class_method(name, ...)
nameで指定したクラスメソッド(クラスの特異メソッド) の可視性を変更します.