Beabsichtigte Nutzung:Wie implementiert man das Lispian Cond Makro?
if x > 5 { 0 } else if x < 3 { 1 } else if true { -1 }
Beachten Sie, dass es kein allumfassendes else { ... }
Suffix produzieren:
cond! {
x > 5 => 0,
x < 3 => 1,
true => -1
}
erweitern sollte.
Mein Versuch:
macro_rules! cond(
($pred:expr => $body:expr) => {{
if $pred {$body}
}};
($pred:expr => $body:expr, $($preds:expr => $bodies:expr),+) => {{
cond! { $pred => $body } else cond! { $($preds => $bodies),+ }
}};
);
Allerdings wirft der Compiler über die else
Schlüsselwort.
error: expected expression, found keyword `else`
--> src/main.rs:32:34
|
32 | cond! { $pred => $body } else cond! { $($preds => $bodies),+ }
| ^^^^
Vielen Dank für die Erklärung. –