Swift 4:使用Swift.contains检查字符串中是否存在字符

时间:2018-01-15 09:39:47

标签: swift

我想检查字符串是否包含任何字符' a'' e',' i'' o&#39 ;或者' u'

我理解编写它的代码是:

let target : String = "monocle"
let ok : Bool = target.contains {"aeiou".contains($0)}
// more codes to use the Boolean value of variable 'ok'

任何人都可以解释代码第二行中实际发生的事情,即变量ok的初始化吗?

编辑:更具体一点,我希望找出封闭内部实际发生的事情。感谢 Sweeper 的回答,我现在明白这意味着检查字符串target,逐字符(使用简写参数名称$0),对于任何字符& #39; a',' e',' i',' o'或者' u'

1 个答案:

答案 0 :(得分:2)

首先需要理解"将闭包传递给方法的概念"因为这正是第二行发生的事情。

String.contains可以接受Character -> Bool类型的闭包。它将对字符串的每个字符应用闭包,并查看它返回的内容。如果闭包在应用于任何字符时返回true,则contains将返回true。否则,false

这是你传递的关闭:

{"aeiou".contains($0)}

$0表示第一个参数。它会检查传入的字符是否为aeiou之一。因此,假设此闭包应用于要测试的字符串中的每个字符,当返回true时,contains将返回true