LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Или:

match n {
    0...99 => println("1"),
    100...199 => println("2"),
    200...299 => println("3"),
    _ => println("4"),
}

с полпинка:

  int nn=n/100;
  putchar( 0<nn && nn<4 ? '0'+nn : '4' );
  putchar( '\n' );

или если бы ты все же догадался заменить 1 на one,... то:

switch(n/100) {
    case 0:  printf("less than one hundred\n");    break;
    case 1:  printf("less than two hundreds\n");   break;
    case 2:  printf("less than three hundreds\n"); break;
    default: printf("i do not know\n");            break;
}

так что переделывай свой пример (т.к. свитч в плюсах все же барахло)

кстати: как там в расте с оптимизацией match? сможет он из твоего примера сгенерить мой c putchar ? (сам по себе putchar возможно не эффективен, его вставлять вместо printf не обязательно — речь шла об оптимизации n/100 и в том же духе)

А. нет никаких оптимизаций?

В. не глядя жри что дает компилятор, и радуйся?

С. есть что-то типа EXPLAIN в SQL?

D. свои оптимизации для match?

Исправление www_linux_org_ru, :

Или:

match n {
    0...99 => println("1"),
    100...199 => println("2"),
    200...299 => println("3"),
    _ => println("4"),
}

с полпинка:

  int nn=n/100;
  putchar( 0<nn && nn<4 ? '0'+nn : '4' );
  putchar( '\n' );

или если бы ты все же догадался заменить 1 на one,... то:

switch(n/100) {
    case 0:  printf("less than one hundred\n"); break;
    case 1:  printf("less than two hundreds\n"); break;
    case 2:  printf("less than three hundreds\n"); break;
    default: printf("i do not know\n"); break;
}

так что переделывай свой пример (т.к. свитч в плюсах все же барахло)

кстати: как там в расте с оптимизацией match? сможет он из твоего примера сгенерить мой c putchar ? (сам по себе putchar возможно не эффективен, его вставлять вместо printf не обязательно — речь шла об оптимизации n/100 и в том же духе)

А. нет никаких оптимизаций?

В. не глядя жри что дает компилятор, и радуйся?

С. есть что-то типа EXPLAIN в SQL?

D. свои оптимизации для match?

Исходная версия www_linux_org_ru, :

Или:

match n {
    0...99 => println("1"),
    100...199 => println("2"),
    200...299 => println("3"),
    _ => println("4"),
}

с полпинка:

  int nn=n/100;
  putchar( 0<nn && nn<4 ? '0'+nn : '4' );
  putchar( '\n' );

или если бы ты все же догадался заменить 1 на one,... то:

switch(n/100) {
    case 0:  printf("less than one hundred\n"); break;
    case 1:  printf("less than two hundreds\n"); break;
    case 2:  printf("less than three hundreds\n"); break;
    default: printf("i do not know\n"); break;
}

так что переделывай свой пример (т.к. свитч в плюсах все же барахло)

кстати: как там в расте с оптимизацией match? сможет он из твоего примера сгенерить мой c putchar?

А. нет никаких оптимизаций?

В. не глядя жри что дает компилятор, и радуйся?

С. есть что-то типа EXPLAIN в SQL?

D. свои оптимизации для match?