happy_ryo

2014.03.13

追加されたリテラル構文、使ってますか?

こんにちは、happy_ryo です。
最近、Python を勉強してます。

NSString 以外にもリテラル構文が追加されて結構たちますが、使ってますか?ぼくはたまに忘れます。とある人が、追加されたリテラル構文での書き方を21世紀っぽいと言っていたので、21世紀を生きるプログラマとしてやっていく為に、今回は Objective-C のリテラル構文をおさらいしてみようと思います。

生成編

数値(NSNumber)

従来の書き方

21世紀の書き方

補足

例以外にも、 [NSNumber numberWith~:] 系の物もリテラル構文を利用して NSNumber *boolNumber = @NO; この様な形でインスタンスを生成する事が出来ます。

辞書(NSDictionary)

従来の書き方

21世紀の書き方

補足

従来は、オブジェクト:キーだった並びが、21世紀になると、キー:オブジェクトになって、直感的になりました。また、従来は最後に nil を入れる必要があった部分が不要になっています。

配列(NSArray)

従来の書き方

21世紀の書き方

補足

NSDictionary と同様に、最後尾に nil を入れる必要がなくなりました。

要素へのアクセス編

辞書(NSDictionary)

従来の書き方

21世紀の書き方

補足

従来はメソッドへメッセージを送る方式で冗長だったのが、リテラル構文を使うことでシンプルに書くことが出来るようになりました。

配列(NSArray)

従来の書き方

21世紀の書き方

補足

Dictionary と同様に、添え字参照が行えるようになった事で、大分シンプルに書くことが出来るようになった。

おまけ

リテラル構文を用いて、ミュータブルなインスタンスを生成したい場合は、以下のように書くことで簡単に実現出来ます。

この手の文法は、手が覚えているせいか、ついつい以前から使っている物を使いがちなので、意識して使っていきたいですね。