Arrays SWIFT如何将super.array的嵌套结构元素复制到数组变量中

Arrays SWIFT如何将super.array的嵌套结构元素复制到数组变量中,arrays,swift,struct,Arrays,Swift,Struct,抱歉,如果这已经在某个地方得到了答复,我不确定我是否在搜索中使用了正确的关键字 为了将数组传递给函数,我想将stuct数组的内容传递给变量。我的结构基本上是这样的(实际内容有点复杂) 有没有比这更合适的方法将所有TopVar的nestedVar值传递给函数 var myVar:topStruct! var myVarArray:[Int] for element in myVar.topVar { myVarArray[i] = element.nestedVar i=i+1 } r

抱歉,如果这已经在某个地方得到了答复,我不确定我是否在搜索中使用了正确的关键字

为了将数组传递给函数,我想将stuct数组的内容传递给变量。我的结构基本上是这样的(实际内容有点复杂)

有没有比这更合适的方法将所有TopVar的nestedVar值传递给函数

var myVar:topStruct!
var myVarArray:[Int]
for element in myVar.topVar {
   myVarArray[i] = element.nestedVar
   i=i+1
}
result = myFunc(myVarArray)
   
或者我应该将myFunc定义为

myFunc(structPassed:topStruct!) -> Int {
   var result = 1
   for element in structPassed.topVar {
      result += element.nestedVar
      i=i+1
   }
return result
}

由于我不需要nestedStruct中的其他元素(在现实生活中的代码中),我想第一种方法在内存方面稍微精简了一些

不清楚您想做什么,但我正确地编写了如何填充数组:

var myVar: topStruct = topStruct(topVar: [nestedStruct(nestedVar: 1), nestedStruct(nestedVar: 2), nestedStruct(nestedVar: 3)])

var myVarArray = [Int]()
for element in myVar.topVar {
    myVarArray.append(element.nestedVar)
}
以及如何返回数组中元素的总和:

func myFunc(structPassed: topStruct) -> Int {
    var result = 0
    for element in structPassed.topVar {
      result += element.nestedVar
    }
    return result
}

myFunc(structPassed: myVar)

最简单的方法是使用高阶函数
map

myFunc(myVar.topVar.map {$0.nestedVar})

如果您还没有这样做过,那么现在是学习高阶函数的时候了,它们是处理集合时非常强大的工具。

非常有用。将进一步研究“地图”。如果你还有时间,也许你也可以看看我的另一个(未回答的)问题:-)干杯(仍然在学习曲线的陡峭部分…)
myFunc(myVar.topVar.map {$0.nestedVar})