Swift&x2B+&;——不赞成。循环的备选方案
++和--在最新版本的swift中已被弃用,并将在swift 3中删除 我有这个代码,目前正在工作,我想更新,但我不知道如何重写它。任何帮助都将不胜感激Swift&x2B+&;——不赞成。循环的备选方案,swift,loops,Swift,Loops,++和--在最新版本的swift中已被弃用,并将在swift 3中删除 我有这个代码,目前正在工作,我想更新,但我不知道如何重写它。任何帮助都将不胜感激 for var i = 2; i <= remarkIndex; ++i { if containsWind(metarArray[i]) { metarDict.updateValue(metarArray[i], forKey: "winds") } } var i=2的;我喜欢这样: for i i
for var i = 2; i <= remarkIndex; ++i {
if containsWind(metarArray[i]) {
metarDict.updateValue(metarArray[i], forKey: "winds")
}
}
var i=2的;我喜欢这样:
for i in 2...remarkIndex
这是你应该一直做的事情
但是,由于您想使用i
做的唯一一件事就是索引到Metararay
,因此最好循环遍历Metararay
本身:
不需要索引 为了完整起见,让我们也为内部块展示一种更实用的方法:
metarArray[2...remarkIndex]
.filter(containsWind)
.forEach { metarDict.updateValue($0, forKey: "winds") }
这会增加i的值,然后返回增加的值吗?metarArray[2…remarkIndex]。过滤器{containsWind($0)}。forEach{metarDict.updateValue($0,forKey:“winds”}
感谢你给出了一个简明扼要的答案。我正在学习!Huzzah。但是更好,因为你只想使用metarArray[i]
,本应循环使用Metararay
本身。连续索引到数组中是完全不必要的。删除外部循环确实很有意义,因为您提到了它。我感谢您的评论。另外,您想从索引2开始的事实有一种不好的味道。但这是另一个问题。您甚至可以使用其中包含swind(项目)
哦,天哪,这很优雅,看起来没有那么多问题。我们需要坐下来学习这些语法选项。非常感谢您的帖子。这当然是最快捷的方式,但请注意,这需要额外的费用,因为我们必须在片段中循环两次。然而,在您的实际代码中,这一费用可能可以忽略不计。@matt I同意功能性方法并不总是最好的方法,但它是最漂亮的!
metarArray[2...remarkIndex]
.filter(containsWind)
.forEach { metarDict.updateValue($0, forKey: "winds") }