gpt4 book ai didi

ios - let (constant) 表现得像一个函数的语法。你可以解释吗?

转载 作者:行者123 更新时间:2023-11-28 13:00:34 26 4
gpt4 key购买 nike

我在尝试用 Swift 覆盖文件时遇到了这种语法,但我无法理解它,因为看起来常量的行为就像一个函数(我正在使用 Alamofire 进行网络连接):

 let destination: (NSURL, NSHTTPURLResponse) -> (NSURL) = {
(temporaryUrl, response) in
if response.statusCode == 200 {
if NSFileManager.defaultManager().fileExistsAtPath(pdfUrl.path!) {
try! NSFileManager.defaultManager().removeItemAtURL(pdfUrl)
}
return DocumentDirectoryUrl.URLByAppendingPathComponent(pdfFileName)
}
else {
return temporaryUrl
}
}

这里是destination中使用的常量

    let DocumentDirectoryUrl = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!)
let pdfFileName = filename
let pdfUrl = DocumentDirectoryUrl.URLByAppendingPathComponent(pdfFileName)

我不明白它是如何工作的,因为 destination 被声明为一个常量,但它的行为就像一个函数。谁能给我解释一下?

最佳答案

在 Swift 中,函数是对象,就像整数、 double 、字符串等。所以是的,您绝对可以将函数分配给常量。因此,该常量没有类型“Int”或“Double”或“String”,但在本例中为“(NSURL, NSURLHTTPResponse) -> NSURL”。

您可以拥有一个函数数组、一个以函数作为值的字典、一个其中一个或多个实例变量是函数的结构或类,等等。

关于ios - let (constant) 表现得像一个函数的语法。你可以解释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001389/

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