在Swift中,如何对数组中的值求和

问题描述

这是我的代码:

import Foundation

struct Movie {
    var title = ""
    var year = 0
    var isImportant: Bool
    var isFinished: Bool
    
    init(title: String,year: Int,isImportant: Bool,isFinished: Bool) {
        self.title = title
        self.year = year
        self.isImportant = isImportant
        self.isFinished = isFinished
    }

    static let list1 = [
        Movie(title: "The Shawshank Redemption",year: 1994,isImportant: false,isFinished: false),Movie(title: "The Godfather",year: 1972,Movie(title: "The Dark Knight",year: 2008,Movie(title: "The Godfather: Part II",year: 1974,Movie(title: "Avengers: Infinity War",year: 2018,Movie(title: "Schindler's List",year: 1993,isFinished: false)
        ]
    
    static let list2 = [
        Movie(title: "The Lord of the Rings: The Fellowship of the Ring",year: 2001,Movie(title: "Inception",year: 2010,Movie(title: "Forrest Gump",Movie(title: "Fight Club",year: 1999,isFinished: false)
        ]
    
    static let list3 = [list1,list2]
    
    static let nomsDesRepas: [String] = ["Petit Déjeuner","Collation 11h"]
}


var list2Dim = Movie.list3
var list1 = Movie.list1

我必须总结“ list1”字典中的年份,而不是直接来自“ list1”。我需要阅读“ list2dim”字典。 我的意思是(1994 + 1972 + ... + 1993)

解决方法

我不知道如何在其中导航!你能帮我吗?

无论数组(包括其他数组)中的内容如何,​​索引都是相同的,因此请“导航”刚刚重复的索引。您知道如何根据问题Access a value in a 2D array through programming in Swift编制索引。

在操场上尝试以下操作,并确保您了解每条输出线:

let list1 = [1,2]
let list2 = [3,4,5]
let list3 = [6]

let listlist1 = [list1,list2]
let listlist2 = [list3]

let listlistlist = [listlist1,listlist2]

// print what we have produced
print(listlistlist)

// "navigate" into the structure,one step at a time
let result1 = listlistlist[0]
print(result1)
let result2 = result1[1]
print(result2)
let result3 = result2[2]
print(result3)

// indexing is left-associative,navigate in one step
let result012 = listlistlist[0][1][2]
print(result012)

如果您不确定读取的是什么左关联Operator associativity

在上面的示例中,如果您知道可以访问其属性的对象,那么最终结果是一个数字,该数字来自您先前的question

在问题Multiply one dictionary by another in Swift的答案中,您学习了如何通过将函数应用于现有数组的每个元素来使用map来生成新数组。

如果库中存在诸如map这样的函数,该函数可以按照某种模式处理整个数组,那么库中可能没有其他函数可以按照某种其他模式处理整个数组吗?因此,请查找map的文档,然后通读文档的该区域以了解发现的内容–您可能不会失望,并且更接近于将年值求和的目标。

如果在旅途中遇到麻烦,请问一个新问题,包括到目前为止设计的代码,描述您遇到的错误或无法解决的步骤,并提供一个链接回答这个问题,以便读者可以阅读您的问答环节。无疑会有人帮助您进行下一步。

继续学习,阅读和学习! HTH

,

我终于找到了我的问题的答案:

struct Movie {
    var title = ""
    var year = 0
    var isImportant: Bool
    var isFinished: Bool
    
    init(title: String,year: Int,isImportant: Bool,isFinished: Bool) {
        self.title = title
        self.year = year
        self.isImportant = isImportant
        self.isFinished = isFinished
    }

    static let list1 = [
        Movie(title: "The Shawshank Redemption",year: 1994,isImportant: false,isFinished: false),Movie(title: "The Godfather",year: 1972,Movie(title: "The Dark Knight",year: 2008,Movie(title: "The Godfather: Part II",year: 1974,Movie(title: "Avengers: Infinity War",year: 2018,Movie(title: "Schindler's List",year: 1993,isFinished: false)
        ]
    
    static let list2 = [
        Movie(title: "The Lord of the Rings: The Fellowship of the Ring",year: 2001,Movie(title: "Inception",year: 2010,Movie(title: "Forrest Gump",Movie(title: "Fight Club",year: 1999,isFinished: false)
        ]
    
    static let list3 = [list1,list2]
    
    static let nomsDesRepas: [String] = ["Petit Déjeuner","Collation 11h"]
}

var list2Dim = Movie.list3

func sumSectionCalorie(Liste liste: Int) -> Int {
var total = 0
let number = list2Dim[liste].count
    for xxx in 0 ..< number {
    
        total += list2Dim[liste][xxx].year
}
    return total
}

let total = sumSectionCalorie(Liste: 0)
print(total)

谢谢CRD给我的提示。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...