问题描述
这是我的代码:
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给我的提示。