【Objective-C】switch文でexpected expressionエラー
下記のようなコードを書くと。。。
NSInteger value = 0; switch (value) { case 0: NSString *str = @“hoge”; break; default: break; }
「expected expression」と怒られちゃいます。
どうやらswitch文のなかで新規に変数を定義する際は,
新たにスコープを用意する必要があるらしい。
なので。。。
NSInteger value = 0; switch (value) { case 0: { NSString *str = @“hoge”; break; } default: break; }
のようにするとOK。
もしくは。。。
NSInteger value = 0; NSString *str; switch (value) { case 0: str = @“hoge”; break; default: break; }
のように、変数の定義をswitch文の外に出してしまうか。
ちなみに、この記事を書いていて気付いたけど、Objcのswicth文の制御式に文字列は使えない。。。
スコープを用意する必要があったり、文字列を制御式に使えないのはC言語の仕様らしいです。
他の言語でもそうだけどswitch文はトラブルの元だから使わないほうがいいのかな。。