gpt4 book ai didi

swift - 在没有 var/let 的情况下在 Swift 中初始化变量

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:51 25 4
gpt4 key购买 nike

我是 Swift 的新手,所以这可能是一个菜鸟问题,但如果有人消除了疑问,我将不胜感激,因为我在网上找不到任何解释。在使用 for-in 循环时,有时变量没有被初始化,仍然没有编译错误。有时,如果我尝试在它们之前编写 var/let,它会显示错误 - 'let' 模式不能嵌套在已经不可变的上下文中

例如,在下面的代码中,为什么之前没有初始化变量movie和releasedDate?

class MovieArchive {
func filterByYear(year:Int, movies:Dictionary<String, Int> ) -> [String]{
var filteredArray = [String]()
for (movie, releaseDate) in movies {
if year == releaseDate {
filteredArray.append(movie)
}
}
return filteredArray
}

}

var aiThemedMovies = ["Metropolis": 1927, "2001: A Space Odyssey": 1968, "Blade Runner": 1982, "War Games": 1983, "Terminator": 1984, "The Matrix": 1999, "A.I.": 2001, "Her": 2013, "Ex Machina": 2015]

var myArchive = MovieArchive()
myArchive.filterByYear(year: 2013
, movies: aiThemedMovies)

在此先感谢您的帮助:)

最佳答案

Swift 确实使用 let 初始化了 moviereleaseDate,但是简化了初始化,所以你可以假设它们被设置为每次循环迭代时更正来自 movies 的变量。这就是为什么您不需要在 moviereleaseDate 之前写 let。

如果你在变量前面写var,你可以改变它指向的数组中的值。如果它是一个 let,那么它不会让你改变它。

例如,如果将 var 放在其中一个变量的前面,此代码会将所有 releaseDates 更改为 2000:

class MovieArchive {
func filterByYear(year:Int, movies:Dictionary<String, Int> ) -> [String]{
var filteredArray = [String]()
for (movie, var releaseDate) in movies {
releaseDate = 2000
if year == releaseDate {
filteredArray.append(movie)
}
}
return filteredArray
}
}

关于swift - 在没有 var/let 的情况下在 Swift 中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com