2017-11-03 17 views
1

RustにはNone/null/nilの値がないので、配列の欠損値または無効な値をどのように表現できますか?欠損値または無効な値を表す方法は?

+1

[ 'オプション'](https://doc.rust-lang.org/stable/std/option/index.html)無効な値が存在する可能性がある場合は[[結果 '](https://doc.rust-lang.org/stable/std/result/index.html)を参照してください。 – ljedrz

+0

@ljedrz 'let color = [255、0、255]'の文脈で私を見せてもらえますか?たとえば、 'color [1]' = 'null'を作る方法です。 – Greg

答えて

3

これはすべてdiscussed in The Rust Programming Languageです。あなたはその本を読んでください。新規参入者が多くの質問や懸念事項に対処するために多くの時間が費やされてきました。

錆はあなたがいることを言う私はなぜわからないNone

を持っていないので、そのOption(および拡張Option::Noneによる)を考慮すると、錆のキー作品です。実際には、それが輸入されることは非常に重要ですin the prelude

あなたは一つの「行方不明」の値を持つ配列たい場合:ゼロ/ヌルの概念に多くの言語で

let color = [Some(255), None, Some(255)]; 

を、すべての値は、あなたが期待するタイプは、それがためにすることができまたは特別な型のnil/null

あなたがやマッチング パターンを使用する必要が
let sum = color[0] + color[1]; 
error[E0369]: binary operation `+` cannot be applied to type `std::option::Option<{integer}>` 
--> src/main.rs:4:15 
    | 
4 |  let sum = color[0] + color[1]; 
    |    ^^^^^^^^^^^^^^^^^^^ 
    | 
    = note: an implementation of `std::ops::Add` might be missing for `std::option::Option<{integer}>` 

FooOption<Foo>は別個のタイプであり、あなたは、欠損値を処理するために「忘れる」ことはできません - これはルーストに真実ではありませんのヘルパーメソッド(内部でパターンマッチングを行う)を使用して値を「アンパック」し、SomeNoneのケースを区別して処理します。

見る:可能のため

+0

ありがとうございました!私はあなたの答えを何回もupvoteすることができればいいと思う! "' Foo'と 'Option 'は別の型です "これは実際に私のためにクリアされています(' color [0] + color [1] 'の例を含む)。私は(ゆっくりと)本を読んでいます。それは素晴らしいことですし、他の情報も聞いて読んでいます。 – Greg

関連する問題