Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift&x2B+&;——不赞成。循环的备选方案_Swift_Loops - Fatal编程技术网

Swift&x2B+&;——不赞成。循环的备选方案

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

++和--在最新版本的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 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") }