0
意図している用法:Lispian condマクロの実装方法は?
cond! {
x > 5 => 0,
x < 3 => 1,
true => -1
}
がに展開する必要があります:それはキャッチオールelse { ... }
サフィックスを生成しないことを
if x > 5 { 0 } else if x < 3 { 1 } else if true { -1 }
注意。
私の試み:
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),+ }
}};
);
しかし、コンパイラはelse
キーワードについて文句を言います。
error: expected expression, found keyword `else`
--> src/main.rs:32:34
|
32 | cond! { $pred => $body } else cond! { $($preds => $bodies),+ }
| ^^^^
ありがとうございます。 –