【发布时间】:2018-04-21 16:36:18
【问题描述】:
我有一组单词,有些可能有错别字。
potentialWords = ["hello", "lkasjdf", "hunry"]
我想要做的是,返回一个包含所有有效单词的数组,以及那些能够使用我创建的函数 correctWord 自动更正的单词。它返回一个潜在匹配的数组。所以"hunry" 可能会返回["hungry", "hurry"]。我将选择第一个索引以获得最佳猜测。
但是有些词是无法纠正的!例如"lkasjdf" 不会找到任何更正,但"hunry" 会。
我正在尝试类似:
potentialWords.map {
if correctWord($0) != nil {
return correctWord($0)[0]
}
}
当然这会抱怨说我需要在 if 子句之外返回。我可以根据单词是否可以纠正来过滤列表,然后映射过滤后的列表,重新检查哪些单词需要纠正,但这会运行correctWord函数的次数太多,而且非常敏感.
我希望能够一次通过,并返回一个包含所有有效单词的数组,以及更正的单词。
附:为了简洁起见,我在 map 函数中调用了 correctWord 两次,但当然我会将 correctWord($0) 分配给一个变量,然后如果它不是 nil,则获取第一个索引并将其添加到新列表中。
【问题讨论】:
标签: swift filter functional-programming reduce map-function