什么是这个解开东西:有时它是不解开的,有时它是unwrap_or
注意关于
read_line
和read_line
这个问题的read_line
属于Rust的1.0之前的版本。 关于unwrap_or
和unwrap_or
的一般概念仍然相关。
我在为Rubyists读Rust的时候遇到过:
let mut reader = BufferedReader::new(io::stdin()); let input = reader.read_line().unwrap_or(~"nothing");
注意关于
read_line
和read_line
这个答案的read_line
属于Rust的1.0之前的版本。 关于unwrap_or
和unwrap_or
的一般概念仍然相关。
因为read_line
可能会失败,所以返回Option<~str>
read_line
Option<~str>
。 为了得到这个值,你可以使用模式匹配或者其中一种解包方法。
unwrap_or
和unwrap_or
之间的区别是,如果没有值( None
), unwrap
将失败,但unwrap_or
将返回指定的默认值(在这种情况下为“无”)
注意关于
read_line
和read_line
这个答案的read_line
属于Rust的1.0之前的版本。 关于unwrap_or
和unwrap_or
的一般概念仍然相关。
铁锈有API文档解释这些事情。
BufferedReader.read_line
:
fn read_line(&mut self) -> Option<~str>
读取下一行input,解释为UTF-8编码的unicode码点序列。 如果遇到换行符,则换行符包含在返回的string中。
…
[然后提高
io_error
条件,这是一种情况下,它将返回None
– 如果条件处理。 如果不是这样就会失败,所以你永远不会收回任何东西。]
如果读者已经阅读了所有的内容,你也会得到None
。
Option.unwrap
:
fn unwrap(self) -> T
将值从选项types中移出并返回。
主要用于获取选项types中的string,向量和唯一指针而不复制它们。
…
那是,
-
Some(a).unwrap()
返回a
-
None.unwrap()
失败
Option.unwrap_or
:
fn unwrap_or(self, def: T) -> T
返回包含的值或默认值
那是,
-
Some(a).unwrap_or(b)
返回a
-
None.unwrap_or(b)
返回b