« the ふーどのこんにゃく | トップページ | Objective-Cはメソッド呼び出しがスペース »

2007.09.12

Objective-Cはメソッドの引数にラベルをつけるのか

Objective-Cを勉強して初めての驚きがこれだ。

↓が引数を2つ持つメソッド。
- (void)setCount:(int)count andIndex:(int)index;

これは「setCount」メソッドとは呼ばないで「setCount:andIndex:」っていう名前のメソッドになる。
わお、もう、なんか今までの常識とかけ離れすぎていて驚きだけれども、確かにこうなってくるとプログラムが文章のごとくなってくるな。便利そう。というか、いい習慣が付きそう。

上のプログラムをrubyでかくと
def count_and_index(count, index)
end
かな。

ちなみに、メソッドを使うときも変わっていて
setCount:12 andIndex:6
みたいに使う。

だから、プログラムのソースコードを読んでいるときも、どういう値を渡しているかが一目瞭然。

ちなみに、ruby(とかjavaとかperl)だと
count_and_index(12, 6);
とかいう風になって、どういう値を渡しているかがわからない。
まあ、無理矢理hashを渡すという手もあるけど、言語自体がサポートしていないから不便だし、実装者判断になりがちで逆に読みにくくて使いにくいケースが多い。
↓はrubyで似たような感じで使った場合。
count_and_index(:count => 12, :index => 6)
でも↑の用にすると、メソッド側で受けるとかなりダサい。

def count_and_index(hash)
puts hash[:count]
puts hash[:index]
end

これだと、メソッド名(defのある1行目)を見ただけではどんな引数を受けているのかがわからない。凄く不便。

Ruby(とかperl)でももっと綺麗に表現できる方法があったら教えて下さい。

↓1日1ポチッとをお願いします!励みになります!
ポチっとよろしく!

|

« the ふーどのこんにゃく | トップページ | Objective-Cはメソッド呼び出しがスペース »

Cocoa」カテゴリの記事

コメント

なるほど、setCount:indexじゃなくて、setCount:andIndexっていうのは分かりやすいですね! iOSとかのAPI(ライブラリ)はそうなってないけど、Objective-Cの説明上は断然andIndexですね。素晴らしい。

投稿: たかはし | 2011.07.12 00:06

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22269/16428918

この記事へのトラックバック一覧です: Objective-Cはメソッドの引数にラベルをつけるのか:

« the ふーどのこんにゃく | トップページ | Objective-Cはメソッド呼び出しがスペース »