美文网首页
swift Contains使用,判断是否包含某元素,条件判断

swift Contains使用,判断是否包含某元素,条件判断

作者: JQShan1993 | 来源:发表于2020-03-12 19:45 被阅读0次

    在项目开发中遇到需要判断String是否包含emoji表情的需求,要怎样优雅的判断呢?

    平时我们经常会用到contains(element:)来判断集合中是否包含某一元素(element需要遵循Equatable协议的)

    let sayHello: String = "Hello world")
    sayHello.contains("w")  // true
    
    let avengers: [string] = ["雷神", "绿巨人", "美国队长", "钢铁侠"]
    avengers.contains("钢铁侠")  // true
    avengers.contains("超人") // false
    

    但是emoji不是明确的某个值,该如何写呢,swift为我们提供了闭包contains(where predicate: (Character) throws -> Bool)
    遍历每个字符character,判断每个字符是否为emoji

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

    还是不够优雅?既然要优雅,就需要简化

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

    swift自动为闭包提供参数名缩写功能,可以直接通过$0$1等来表示闭包中的第一个第二个参数,并且对应的参数类型会根据函数类型来进行判断

    相关文章

      网友评论

          本文标题:swift Contains使用,判断是否包含某元素,条件判断

          本文链接:https://www.haomeiwen.com/subject/inefzctx.html