Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift:如果let语句条件,则不能使用数组过滤器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一组用户名

let users = ["Hello","1212","12","Bob","Rob"]

我想得到名字长度为2的第一个用户,所以我过滤了数组并获得了第一个用户

if let SELEcted = users.filter{$0.characters.count == 2}.first {
   print(SELEcted)
}

代码在swift 2.2下抛出了编译错误

一行上的连续陈述必须用’;’分隔

但是,这工作正常

let SELEcted = users.filter{$0.characters.count == 2}.first
if let SELEcted = SELEcted {
   print(SELEcted)
}

任何人都可以解释为什么我需要先将过滤结果存储在一个单独的变量中?任何帮助将非常感激.

解决方法

你可以通过在你传递给过滤器的闭包周围加上括号来完成这项工作:

if let SELEcted = users.filter({$0.characters.count == 2}).first {
    print(SELEcted)
}

这是正确的方法.有时候在具有额外元素的行上,尾随闭包语法不能很好地工作.您还可以在整个语句周围加上括号:

if let SELEcted = (users.filter {$0.characters.count == 2}.first) {
    print(SELEcted)
}

Swift在解析你的语句时遇到了麻烦.括号在如何解析行方面给出了帮助.您应该更喜欢第一种方式,因为闭包确实是过滤器的参数,因此将其括在括号中会使Swift明确表示您将其传递给过滤器.

大佬总结

以上是大佬教程为你收集整理的Swift:如果let语句条件,则不能使用数组过滤器全部内容,希望文章能够帮你解决Swift:如果let语句条件,则不能使用数组过滤器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。