6

使用文档中的苹果示例

float (^oneFrom)(float);


oneFrom = ^(float aFloat) {

  float result = aFloat - 1.0;

  return result;

};

我收到两个错误:

  1. 用不同类型重新定义“oneFrom”:“int”与“float(^)(float)”
  2. 缺少类型说明符,默认为 'int'

也来自文档..

如果你没有显式声明一个块表达式的返回值,它可以从块的内容中自动推断出来。如果推断返回类型并且参数列表为 void,那么您也可以省略 (void) 参数列表。如果或当存在多个 return 语句时,它们必须完全匹配(必要时使用强制转换)。

4

2 回答 2

3

您不能在文件范围内定义块,只能在函数中定义。这按预期工作:

void foo (void)
{
    float (^oneFrom)(float);
    oneFrom = ^(float aFloat) {
        float result = aFloat - 1.0;
        return result;
    };
}
于 2013-07-03T14:20:45.883 回答
-1

该块没有返回类型,默认返回类型是 void,你需要去

float (^oneFrom)(float);

oneFrom = ^ float (float aFloat) {

  float result = aFloat - 1.0;

  return result;

};

是一个更好的块示例

于 2013-07-03T14:11:01.693 回答