メソッドは,オブジェクトを操作するもの。
Rubyでは,全ての操作がメソッドとして実装されている。
7.1 メソッド呼び出し
一般形
オブジェクト.メソッド名(引数1, 引数2, ..., 引数n)
オブジェクト指向の世界では,メソッドを実行することを
「オブジェクトにメッセージを送る」「オブジェクトはメッセージを受け取る」と解釈する。
上の構文でのオブジェクトをレシーバという。
7.2 メソッドの分類
7.2.1 インスタンスメソッド
あるオブジェクト(インスタンス)をレシーバとするメソッド。
### インスタンスメソッドの例
"10, 20, 30, 40".split(",")
1000.integer?
obj =~ arg1
obj[arg1] = arg2
obj + arg1
後半は構文が違うが,演算子の形をしたメソッドである。
Rubyでは既存のメソッドをユーザが再定義できる。
7.2.2 クラスメソッド
レシーバがクラス。例えば,インスタンスを作る場合など。
### クラスメソッドの例
a = Array.new
f = File.open("some_file")
t = Time.now
クラスメソッドの呼び出しには,「.」の代わりに「::」も使える。
7.2.3 関数的メソッド
レシーバがないメソッド。本当にないわけではなく,省略されている。
### 関数的メソッドの例
print "Hello!"
sleep(10)
7.3 メソッドの定義
メソッド定義の一般的な構文
def メソッド名(引数1, 引数2, ...)
実行したい処理
end
メソッド名には,アルファベット,数字,「_」が使える。数字で始めることはできない。
インスタンスメソッドやクラスメソッドを定義するには,先にクラスを定義する必要がある。
デフォルト値
「引数名 = 値」と書くと,
引数を省略してメソッドを呼び出したときに使われる値を指定できる。
### 引数のデフォルト値が指定されているメソッドの例
def hello(name = "Ruby")
print "Hello, ", name, ".\n"
end
hello() # 引数を省略して呼び出し
hello("Newbie") # 引数を指定して呼び出し
メソッドが複数の引数を持つ場合,
引数リストの右端から順にデフォルト値を指定する。
def func(a, b=1, c=2)
...
end
メソッドの返り値
return 値
値を省略した場合は,nilが返される。
return文を省略した場合は,
メソッドの中で最後に得られる値が返り値となる。{{\br}}
また,メソッドを途中で終了させるときもreturn文を使うことができる。
最終更新:2011年07月26日 01:20