为什么打印!函数在Rust中使用感叹号?

问题描述 投票:29回答:1

在Swift中,!意味着展开一个可选的(可能的值)。

rust
1个回答
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)
}
© www.soinside.com 2019 - 2024. All rights reserved.