【问题标题】:What is this double curly brace in C, Objective-CC,Objective-C中的这个双花括号是什么
【发布时间】:2014-05-12 15:18:23
【问题描述】:

关于this source code@autoreleasepool 中的双花括号的用途是什么?

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        {{
            assert([EnumWith1ConstantSansExplicitValuesByLabel() count] == 1);
            assert([[EnumWith1ConstantSansExplicitValuesByLabel() objectForKey:@"EnumWith1ConstantSansExplicitValues_Constant1"] isEqual:[NSNumber numberWithInt:0]]);

            assert([EnumWith1ConstantSansExplicitValuesByValue() count] == 1);
            assert([[EnumWith1ConstantSansExplicitValuesByValue() objectForKey:[NSNumber numberWithInt:0]] isEqual:@"EnumWith1ConstantSansExplicitValues_Constant1"]);

            EnumWith1ConstantSansExplicitValues a = 0;

            assert(EnumWith1ConstantSansExplicitValues_Constant1 == a);
            assert([@"EnumWith1ConstantSansExplicitValues_Constant1" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]);
            assert(EnumWith1ConstantSansExplicitValuesFromString(EnumWith1ConstantSansExplicitValuesToString(EnumWith1ConstantSansExplicitValues_Constant1), &a));
            assert(EnumWith1ConstantSansExplicitValues_Constant1 == a);

            a++;
            assert([@"<unknown EnumWith1ConstantSansExplicitValues: 1>" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]);
            assert(!EnumWith1ConstantSansExplicitValuesFromString(@"foo", &a));
        }}
        {{
            assert([EnumWith1ConstantSansExplicitValuesTrailingCommaByLabel() count] == 1);
        }}
    ...
    printf("success\n");
    return 0;
}

【问题讨论】:

  • 这可能会有所帮助。 stackoverflow.com/questions/6251160/…
  • @User42 不,这不是声明结构。
  • 回答这个问题:花括号是什么意思?然后回答这个问题:花括号内的花括号是什么意思?这是第一个答案的明显结果。 @autoreleasepool 与它无关。
  • 这在技术上并没有错,理论上你剪掉了你想要的花括号,只要你关闭它们。
  • 你应该问作者。我几乎可以肯定这些没有什么特别的意义,即他可能会使用它们,因为他可以。一种可能性是使用这些来标记他的测试用例。

标签: objective-c syntax


【解决方案1】:

双花括号*没有什么特别之处。作者只是使用它在一个相当长的方法中逻辑地分隔代码部分。

*:超出声明范围块的单花括号行为。

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    相关资源
    最近更新 更多