感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

構造体を作って、値を格納して取り出してみる。

スポンサーリンク

この本では構造体については非常にあっさりした説明をしている。
「複数の変数を1つにまとめた型」とした書いていない。

ただ、実例をまじえているので、なんとなく理解が進んだ。
要はJavaBeansみたいなやつだ。
ある型の変数の集合体。で、セッターとかゲッターはあるのか?

見てみよう。

まず、構造体にはルールがある。
・個々のデータに対する型と変数名がある
・構造体はstructから始まる

この辺はなんかC言語っぽいね。
懐かしい。

本の例でいうと、struct Person型を定義するには以下のようにする。

struct Person {
	float height;
	float weight;
	int birthYear;
	int birthMonth;
	int birthDay;
};

末尾にセミコロンを忘れると怒られるから注意すること。

それで、こういうのを作ったあとに、付けたい型名を「Person」のようにしたい場合は、

typedef struct Person Person;

とするみたい。
こうすると、Javaの型みたいに、Personで型名とすることができる。

もうちょっと進めば、構造体がだんだん理解できそう。
むかーしC言語の勉強をしたときに見た気がするけれど、忘れてしまった。
なんか楽しい。


さて、次に、作った構造体のメンバに値を格納していく。
だんだんとメソッドの無いオブジェクトっぽくなってきた。

さっき上の方に書いたやつだと、本のサンプルそのままでよくないので、自分で適当に構造体を定義しよう。
あと、Objective-Cって文字列をポインタで渡すんだね。
わざわざ*つけるのが、若干の違和感だけど、まぁJavaでも文字列はStringオブジェクトだからな。。

struct Friend {
    NSString *name;
    int age;
};

typedef struct Friend Friend;

int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString *name = @"海堂尊";
    
    Friend friend;
    friend.name = name;
    friend.age = 30;
    
    NSLog(@"友達の名前は%@です!",friend.name);
    NSLog(@"友達の年齢は%dです!",friend.age);

    [pool drain];
    return 0;
}

これを実行すると、以下のように表示される。

2013-10-20 20:57:12.739 mytest[335:903] 友達の名前は海堂尊です!
2013-10-20 20:57:12.743 mytest[335:903] 友達の年齢は30です!

読んだ本

Objective-C超入門 改訂第2版――ゼロからしっかり学べるiPhoneプログラミング【Xcode 4.6で解説】

Objective-C超入門 改訂第2版――ゼロからしっかり学べるiPhoneプログラミング【Xcode 4.6で解説】

超基礎から解説してくれて勉強になる。
とくにCに慣れていない自分にとって、構造体のところからちゃんと説明してくれるのは非常にありがたかった。
他の本はとりあえずGUIでペタペタ作る感じだったから。