我试图在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
块是返回每个分支中最后一个值的表达式。
任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:2)
v
可能是f32
,这意味着比较v>0
有类型错误。
请改为v>0.0
和v<0.0
。