switch における変数の宣言 (Objective-C)

Objective-C では、switch ステートメントのセクションの最初の行で変数を宣言するとビルド エラーになるようです。

1-1

これは変数が int 型の場合ですが、解決方法を 2 つ見つけました。

まずは、case ラベルの直後にセミコロン (;) を書くというものです。
これのおかげで 2 行目ということになるのでしょう。

1-2

もう 1 つは、セクションを波かっこ ({ }) で囲むというものです。
スコープが明示されるということでしょう。

1-3

では次に、変数が NSString 型の場合はどうでしょうか。

この場合はなんと、セミコロンを使う方法が通用しません。
セクション内の何行目に記述してもエラーとなるようです。
(もっと複雑なコードを記述したときに、NSString 型でエラーにならないこともあるのですが、条件がわかりません。)

2-1, 2-2

波かっこを使う方法で解決します。

2-3

さらに、default セクション内で NSString 型の変数を試してみました。
この場合は、セミコロンを使う方法でも波かっこを使う方法でも解決できるようです。

3-1, 3-2, 3-3

ちなみに C# では、上記の場合にはエラーにはなりませんが、
複数のセクションで同じ名前の変数を宣言する場合、それぞれのセクションを波かっこで囲まなければなりません。

4-1

4-2

バージョン情報
Xcode 4.3.3

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。