モジュールのクラス.
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で指定したクラスメソッド(クラスの特異メソッド) の可視性を変更します.