传递if if block作为参数

时间:2015-06-01 23:00:00

标签: parameters parameter-passing rust

我试图在Rust中编写一个小型测试程序,因为几乎所有东西都可以用这种语言表达,包括if语句,我想传递一个if-else块作为println!宏的参数,如下所示:

println!("{} {} {}", i.name, if v>0 {"owes"} else{"must receive"}, if v<0 {-v} else{v});

但我收到此错误:

src/main.rs:34:38: 34:39 error: mismatched types:
 expected `f32`,
    found `_`
(expected f32,
    found integral variable) [E0308]
src/main.rs:34      println!("{} {} {}", i.name, {if v>0 {"owes"} else{"must receive"}}, if v<0 {-v} else{v});

与其他if-else块相同的错误,我已经省略了。至于我理解这个概念,这应该有效,因为这个if-else块是返回每个分支中最后一个值的表达式。

任何帮助将不胜感激,提前谢谢。

1 个答案:

答案 0 :(得分:2)

v可能是f32,这意味着比较v>0有类型错误。
请改为v>0.0v<0.0