2013-11-01 28 views
4

我已經在Rust中使用了一些「匹配」,並且已經尋找解決這個問題的方法,因爲我確定必須有解決方案。在下面的例子中,在生成的隨機數不爲零的情況下,我想把生成的隨機數分配給變量i_bal。換句話說,不是按照我的例子分配「23456」,我想分配在比賽中被測試的實際隨機數。我知道可能有更好的解決方法,但是,我想知道使用這種方法的解決方案。如何使用Rust將匹配的值賦值爲結果?

實施例:

let i_bal: i64 = match std::rand::task_rng().gen() { 
    0 => 1234, 
    _ => 23456 
}; 

回答

8

通配符模式相反的則可以使用可變圖案。它們都匹配的一切,但與變量模式匹配的值被綁定到名稱:

let i_bal: i64 = match std::rand::task_rng().gen() { 
    0 => 1234, 
    x => x 
}; 

爲什麼在某些情況下,你想使用通配符模式,讓你清楚你不需要這個值,所以你不必用不必要的變量名稱來污染示波器

例如,如果你有一個(高,低,開,關)的元組,並且只希望變量高和低從它你可以這樣做:

let (high, low, _, _) = tickerData 
+0

好的,謝謝。在重新閱讀文檔時,我發現它的確如此。我認爲一個更直接的例子會使它更加清晰。我會打勾你的答案。文檔中說(部分)「模式中的變量名稱與任何值匹配」。對於外行(我)來說,如果不知道通過使用名字就會創建一個變量(我認爲),這是沒有意義的。我推測它引用了匹配語句外部的變量。這並不是爲了減損我對比賽陳述本身的看法 - 非常強大(並且沒有休息!)。它似乎也使用變量名稱就像「_」。 –

相關問題