В языке Carbon нет оператора switch, но есть match. match - это поток управления, похожий на switch из C и C++ и отражающий аналогичные конструкции в других языках, таких как Swift. Введение match имеет такую структуру: match (expression) {
case value => {
...
break;
}
default => {
...
break;
}
} Здесь необходимо понять несколько моментов. Пример fn Bar() -> (i32, (f32, f32));
fn Foo() -> f32 {
match (Bar()) {
case (42, (x: f32, y: f32)) => {
return x - y;
}
case (p: i32, (x: f32, _: f32)) if (p < 13) => {
return p * x;
}
case (p: i32, _: auto) if (p > 3) => {
return p * Pi;
}
default => {
return Pi;
}
}
} Здесь мы объявили две функции - Foo() и Bar(). Bar() используется для выражения соответствия. Она возвращает кортеж из 32-битного целого числа и кортеж из 32-битных плавающих чисел. Foo() имеет условное соответствие и возвращает 32-битное целое значение. Давайте разберемся в случ