swift Contains使用,判斷是否包含某元素,條件判斷

在項(xiàng)目開(kāi)發(fā)中遇到需要判斷String是否包含emoji表情的需求,要怎樣優(yōu)雅的判斷呢?

平時(shí)我們經(jīng)常會(huì)用到contains(element:)來(lái)判斷集合中是否包含某一元素(element需要遵循Equatable協(xié)議的)

let sayHello: String = "Hello world")
sayHello.contains("w")  // true

let avengers: [string] = ["雷神", "綠巨人", "美國(guó)隊(duì)長(zhǎng)", "鋼鐵俠"]
avengers.contains("鋼鐵俠")  // true
avengers.contains("超人") // false

但是emoji不是明確的某個(gè)值,該如何寫(xiě)呢,swift為我們提供了閉包contains(where predicate: (Character) throws -> Bool)
遍歷每個(gè)字符character,判斷每個(gè)字符是否為emoji

let family1 = "一家人???????????"
let family2 = "一家人"
let hasEmoji = family1.contains { (character) -> Bool in
            if character.isEmoji {
                return true
            }
            return false
}
// true

還是不夠優(yōu)雅?既然要優(yōu)雅,就需要簡(jiǎn)化

let hasEmoji = family1.contains{ $0.isEmoji}   // true
let hasEmoji = family2.contains{ $0.isEmoji}  // false

swift自動(dòng)為閉包提供參數(shù)名縮寫(xiě)功能,可以直接通過(guò)$0$1等來(lái)表示閉包中的第一個(gè)第二個(gè)參數(shù),并且對(duì)應(yīng)的參數(shù)類型會(huì)根據(jù)函數(shù)類型來(lái)進(jìn)行判斷

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 人生處處充滿假設(shè),如果在假設(shè)中度過(guò),人生將是多么的無(wú)趣?面對(duì)現(xiàn)實(shí),正視自己的人生觀、價(jià)值觀!做任何事情都要有足夠的...
    靳燕燕閱讀 460評(píng)論 0 0
  • 前兩天開(kāi)了一個(gè)公眾號(hào),名叫“Dandu-Design”,中文“單讀設(shè)計(jì)”。主要推送有關(guān)設(shè)計(jì)類的信息,網(wǎng)羅各類平面,...
    Fliz閱讀 302評(píng)論 0 1
  • 3月24日是我接受干細(xì)胞移植一年之后。 在這一年的過(guò)程中,我在曲折緩慢的恢復(fù)。一年以來(lái),經(jīng)歷了兩次皮膚排異,一次腸...
    晨曦的北極星閱讀 3,721評(píng)論 2 21

友情鏈接更多精彩內(nèi)容