[info] Blocks
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.12.09 14:01
Оценка:
В компилятор GCC, воходящий в состав Mac OS X 10.6, была добавлен новый, полезный тип данных – блоки. По поведению и объявлению блоки очень похожи на функции:

blockReturningIntTakingChar = ^int (char arg) { return arg*10; };
int n = blockReturningIntTakingChar(‘a’);


Использование нового типа позволяет упростить код, например, сортировка с использованием блоков будет выглядеть следующим образом:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (int argc, const char * argv[]) {

    char *strings[4] = { "Masha", "Vasya", "Dima", "Petya" };
    
    qsort_b( strings, 4, sizeof(char*), ^(const void* l, const void *r) {
        char *left = *(char**)l;
        char *right = *(char**)r;
        return strncmp( left, right, 1 );
    });

    return 0;
}


Apple представил это расширение на рассмотрение рабочей группой по разработке стандарта языка C как N1370: Apple’s Extensions to C. Хочется надеятся что в скором времени данная фича будет работать не только на Mac OS X.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.