メソッド、それは振る舞い。
単純なメソッド
num = "100".to_i
"100"という文字列オブジェクトに対して、to_i というメソッドを指定しています。
文字列を数値に変換するわけです。
オブジェクト指向言語では、ここで言う"100"オブジェクトはレシーバーとも呼ばれます。
receiver (受け取る者) 。
じゃあ何を受け取っているのかというと、to_i というメッセージを受け取っています。
receiver に対してmessage を送って仕事をしてもらうというイメージです。
ブロック付きメソッド
3.times do |i| p "#{i}回目" end
do ~ end までがブロックです。
上の例は、ブロック内に書かれた処理を3回こなします。
また、|i| のような変数は、ブロック変数といいます。
ブロック変数は、ブロック内の処理が実行されるときに値がメソッドから渡されます。
上記の場合、0, 1, 2という数値がブロック変数 i に設定されていきます。
渡される値については、メソッドによってまちまちです。
演算子形式のメソッド
+ , - , [ ] などの演算子もメソッドになります。
このへんは、C++でもあった演算子のオーバーロードっぽい。
c = a + b
a が receiver。
+ がメソッド。
b が 引数になるイメージ?
そして戻り値で演算結果。
メソッドの種類
- インスタンスメソッド
- クラスメソッド
- 関数的メソッド
インスタンスメソッド
其の名のとおり、インスタンスがreceiverとなるメソッド
3.times do |i| p "#{i}回目" end
3 がインスタンス。
times が インスタンスメソッド。
クラスメソッド
f = File.open("hogefile")
File が クラス。
open がクラスメソッド。
関数的メソッド
こりゃなんじゃーと思ったけども、
puts "Hello"
これが関数的メソッドらしい。
receiver を持たないメソッド。
というか、receiver が省略されている。
receiver の状態によってメソッドの振る舞い方が変わんないよ!
ってなメソッドは関数的メソッドになる。
まとめ
オブジェクト指向を知らないと何言ってんだこいつ状態だと思う。
Javaのオブジェクト指向をエヴァで例えると超わかりやすい : IT速報
↑ これがわかりやすいかもしれない。
定義の仕方などは、長くなるので次回としますん。

- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (26件) を見る

- 作者: 久保秋真
- 出版社/メーカー: SBクリエイティブ株式会社
- 発売日: 2013/11/08
- メディア: Kindle版
- この商品を含むブログ (2件) を見る