Обнаружил еще одно сходство между
Rust и
Swift, которое работает идентично, но выглядит немного по-разному.
Конструкции
match (Rust):
let num = 1;
let point = (2, 3);
match num {
1 => println!("один"),
2 => println!("два"),
3 => println!("три"),
_ => println!("непонятно")
}
let result = getPointType((2, 3));
println!("{}", result); // Другие координаты
fn getPointType(point: (i32, i32)) -> String {
match point {
(0, 0) => "В начале координат".to_string(),
(_, 0) => "На оси X".to_string(),
(0, _) => "На оси Y".to_string(),
_ => "Другие координаты".to_string()
}
}
И
switch (Swift):
let num = 1
switch num {
case 1: print("один")
case 2: print("два")
case 3: print("три")
default: print("непонятно")
}
let result = getPointType(point: (2, 3))
print(result) // Другие координаты
func getPointType(point: (Int, Int)) -> String {
switch point {
case (0, 0): "В начале координат"
case (_, 0): "На оси X"
case (0, _): "На оси Y"
default: "Другие координаты"
}
}
Как видите, функционально конструкции идентичны: везде есть
pattern matching, обработка всех случаев и возврат значений. Но визуально
switch в
Swift мне кажется более аккуратным.