カテゴリー「Cocoa」の3件の記事

2007.09.12

Objective-Cはメソッド呼び出しがスペース

javaとかrubyとかは「.」で、まあ普通だと思おう。
perlとかC++は「->」で、まあ、ちょっと変かなと思うけど、見慣れている。
Objective-Cは「 」だ。

いやぁ、これは慣れられるかなぁ。。
object.hello
とか
object->hello
とか書いていたのが
object hello
になる。

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

| | コメント (0) | トラックバック (0)

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ポチッとをお願いします!励みになります!
ポチっとよろしく!

| | コメント (1) | トラックバック (0)

2007.09.08

Cocoaの勉強中

ということで、前に書いた記事(暴想: cocolog_image_uploader.rbをバージョンアップ)の宣言通りCocoaの勉強を始めて見た。

というか、Cocoaを利用するにはObjective-Cを勉強しなくてはいけなくて、その為にはCを勉強しないといけないという、、道のりは長いぜ。。

つーか、Cって凄いね。よくわかんないんだけど、文字列を表すのにいちいち
char* string = "hoge";
とかやんないといけないんだね。
ってか、
char ch = 'a';
ってシングルコーテーションとダブルコーテーションを使い分けるんだね。
ってか、"hoge"が表しているのは、charの配列のリファレンスってことなのか?perlで書くと
\["h", "o", "g", "e"]
みたいな感じ?
でもだったらいちいちchar*ってしなくてもいいよなぁ。
pointer* string = "hoge";
とかいっそ
pointer string = "hoge";
とか。

ま、いいか、そのうちわかるでしょう。

かと思ったら構造体とかいうJavaScript的にルーズで便利そうなハッシュっぽいものが出てきたし。

(きっと恥ずかしいことを書いているんだろうけど、あえて思ったことをそのまま書いてみる)


ちなみに、この本を読んで勉強しています。現在150p/350p。


あ、あと、Cocoaカテゴリーをこのブログに新設しました。

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

| | コメント (0) | トラックバック (0)