在Swift中,!
表示打开可选(可能的值)。
答案 0 :(得分:43)
println!
不是函数,而是宏。宏使用!
将它们与普通方法调用区分开来。 The documentation包含更多信息。
Rust使用Option
类型来表示可选数据。它有一个unwrap
方法。
Rust 1.13将问号运算符?
添加为try!
宏的模拟(最初通过RFC 243提出)。
问号运算符的一个很好的解释是The Rust Programming Language。
fn foo() -> Result<i32, Error> {
Ok(4)
}
fn bar() -> Result<i32, Error> {
let a = foo()?;
Ok(a + 4)
}
问号运算符也是extends to Option
,因此您可能会看到它用于展开值或从函数返回None
。这与仅展开不同,因为程序不会出现恐慌:
fn foo() -> Option<i32> {
None
}
fn bar() -> Option<i32> {
let a = foo()?;
Some(a + 4)
}