私は今日、その場で配列と辞書を作成するための面倒な方法がはるかに少ないことを発見しました。
NSArray *myArray = @[@"one", @"two", @"three"];
NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};
これはobjective-c言語へのかなり新しい追加であり、これらの構成の名前は何ですか?
私は今日、その場で配列と辞書を作成するための面倒な方法がはるかに少ないことを発見しました。
NSArray *myArray = @[@"one", @"two", @"three"];
NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};
これはobjective-c言語へのかなり新しい追加であり、これらの構成の名前は何ですか?
Xcode4.4以降の新機能。それらがコレクションリテラルと呼ばれるのを聞いたことがあります。
追加する編集:
NSArrayおよびNSDictionaryのメンバーをおよびとして参照することもできarray[1]
ますdictionary[@"key"]
。作成構文は、ビルド時に完全に拡張されるため、下位互換性があります。アクセサ構文は、ランタイムの変更を伴うため、そうではありません。
これらは、XCode4.4で出荷されたAppleのLLVM4.0コンパイラの一部です。
詳細については、LLVMのWebサイトの「GrammarAdditions」セクションを参照してください。他の新しいリテラル構文も存在します。これもWebサイトに記載されています。
ええ..他のいくつかの例があります:
// character literals.
NSNumber *theLetterZ = @'Z'; // equivalent to [NSNumber numberWithChar:'Z']
// integral literals.
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSNumber *fortyTwoUnsigned = @42U; // equivalent to [NSNumber numberWithUnsignedInt:42U]
NSNumber *fortyTwoLong = @42L; // equivalent to [NSNumber numberWithLong:42L]
NSNumber *fortyTwoLongLong = @42LL; // equivalent to [NSNumber numberWithLongLong:42LL]
// floating point literals.
NSNumber *piFloat = @3.141592654F; // equivalent to [NSNumber numberWithFloat:3.141592654F]
NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:3.1415926535]
// BOOL literals.
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
私は最初にJavaでそれを見ました!ちょっとかっこいい:)