web-dev-qa-db-ja.com

このラップ解除とは何ですか:時々アンラップされます時々unwrap_orです

Noteread_lineおよび~strに関するこの質問の詳細は、Rustの1.0より前のバージョンに関連しています。 unwrapおよびunwrap_orに関する一般的な概念は引き続き重要です。

Rust for Rubyists つまり:

let mut reader = BufferedReader::new(io::stdin());
let input = reader.read_line().unwrap_or(~"nothing");
67
rofrol

read_lineおよび~strに関するこの回答の詳細は、Rustの1.0より前のバージョンに関するものです。 unwrapおよびunwrap_orに関する一般的な概念は引き続き重要です。

read_lineは失敗する可能性があるため、Option<~str>を返します。値を取得するには、パターンマッチングまたはunwrapメソッドのいずれかを使用できます。

unwrapunwrap_orの違いは、値がなければ(unwrapNoneは失敗するが、unwrap_orは指定されたデフォルト( "nothing")を返すことです。この場合)

59
Arjan

_read_line_および_~str_に関するこの回答の詳細は、Rustの1.0より前のバージョンに関連しています。 unwrapおよび_unwrap_or_に関する一般的な概念は引き続き重要です。

Rustには、これらのことを説明するAPIドキュメントがあります。

_BufferedReader.read_line_

fn read_line(&mut self) -> Option<~str>

UTF-8エンコードされたUnicodeコードポイントのシーケンスとして解釈される入力の次の行を読み取ります。改行が検出されると、返された文字列に改行が含まれます。

[それから_io_error_条件を上げることについて何か。これは、条件が処理された場合にNoneを返す状況の1つです。そうでない場合は失敗し、何も返されません。]

また、すべてがリーダーで読み取られた場合、Noneが返されます。


_Option.unwrap_

fn unwrap(self) -> T

オプションタイプから値を移動して返します。

主に、コピーせずにオプションタイプから文字列、ベクトル、一意のポインタを取得するのに役立ちます。

あれは、

  • 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を返します
83
Chris Morgan