【问题标题】:SWIFT how to copy nested struct element of super.array into array variableSWIFT如何将super.array的嵌套结构元素复制到数组变量中
【发布时间】:2020-10-28 13:29:00
【问题描述】:

很抱歉,如果这已经在某处得到回答,我不确定我是否在搜索中使用了正确的关键字。

为了将数组传递给函数,我想将 stuct 数组的内容传递给变量。我的 struct 看起来基本上是这样的(实际内容要复杂一些)

struct topStruct: Codable {
   var topVar:[nestedStruct]
}

struct nestedStruct: Codable {
   var nestedVar:Int
}

有没有比这更体面的方法将所有 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
}

由于我不需要嵌套结构中的其他元素(在现实生活中的代码中),我想第一种方法在内存方面更精简

【问题讨论】:

    标签: arrays swift struct


    【解决方案1】:

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

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

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

    【讨论】:

    • 就像一个魅力。将进一步研究“地图”。如果您还有时间,也许您还可以查看我的另一个(未回答的)问题stackoverflow.com/questions/62692861/… :-) 干杯(仍在学习曲线的陡峭部分...)
    【解决方案2】:

    目前尚不清楚您要做什么,但我正在正确地编写如何填充数组:

    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)
    

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 2017-03-17
      • 2015-11-28
      • 2020-12-15
      相关资源
      最近更新 更多