簡體   English   中英

我如何追加期權 <char> 到一個字符串?

[英]How would I append an Option<char> to a string?

我正在將match語句與.chars().next() ,如果某個字符與某個字符match.chars().next()將一個字符附加到字符串中。 我正在嘗試這樣做

keyword.push(line.chars().next()) 

但出現錯誤:

expected type 'char' found type Option<<char>>

我如何將其附加到我的字符串上?

就是這樣:因為next()返回Option<char> ,所以很可能返回None 您需要考慮這種情況...否則,您可能會引起恐慌,並且您的應用程序將退出。

因此,盲目且容易出錯的方法是將其拆開:

keyword.push(line.chars().next().unwrap());

這可能會在某個時候崩潰。 您想要的是對其進行重構,並確保其中存在某些內容:

match line.chars().next() {
    Some(c) => {
        if c == 'H' || c == 'W' {
             keyword.push(c);
        }
    },
    None => ()
}

正如Shepmaster在評論中指出的那樣,可以將上述特定情況(我們只關心match一個分支)簡化為if let綁定:

if let Some(c) = line.chars().next() {
    if c == 'H' || c == 'W' {
       keyword.push(c);
    }
}

就是說-您可以通過for循環進行迭代來免費獲得所有功能:

for c in line.chars() {
    if c == 'H' || c == 'W' {
        keyword.push(c);
    }
}

操場上的例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM