Object C에 Block(Closure)가 추가된다!!!

맥(Mac OS X) 2009. 6. 12. 10:24
음.. Snow Leopard(Mac OS X 10.6)에서 부터 루비, 파이썬 또는 C#(3.0 이상)에서 구현되는 Function Block, 또는 Closer.. 언어에 따라 개념이 약간 식은 다를 수 있지만, 어째튼 이게 된다고 하네요. 사용방법은,

I = [I  map:^(id obj) { return [obj uppercaseString]; }];
I = [I  filter:^(id obj) { return [obj hasprefix:@"a"]; }];

또는 바로 C언어에서도,

void EvalFuncOnGrid( float(^block)(float) ) {
    int i;
    for ( i = 0; i < 5 ; ++i ) {
        float x = i * 0.1;
        printf("%f %f", x, block(x));
    }
}

void Caller(void) {
    float forceConst = 3.445;
    EvalFuncOnGrid(^(float x){ return 0.5 * forceConst * x * x; });
}

void main(void) {
   Caller();
}

참고 블러그 => http://www.macresearch.org/cocoa-scientists-part-xxvii-getting-closure-objective-c 아이폰에서도 곧 이런 프로그래밍이 가능해지겠네요. ㅋ

설정

트랙백

댓글