gpt4 book ai didi

Swift 默认参数使用缓存值

转载 作者:行者123 更新时间:2023-11-30 12:41:47 33 4
gpt4 key购买 nike

我有这个方法,它接受一个标志,并根据该标志更新 UI。

func foo(flag: Bool = Reachability.isReachable) {
if (flag) {
// Show an alert
} else {
// Do nothing
}
}

使用默认参数的Boolean实际上是Reachability的可达性。

一旦网络连接关闭,标志的预期值为false,但其始终为true。如果我直接检查它而不使用像 if Reachability.reachable 这样的默认参数,那么它会显示警报。

使用动态变化的默认参数是否错误?

最佳答案

我试图找到一些官方文档,但找不到。 Swift 默认参数值是静态绑定(bind)的,而不是动态绑定(bind)的。参见这篇文章

https://airspeedvelocity.net/2014/06/12/default-parameters-in-swift-are-statically-bound/

编辑:

嗯,我错了,看起来它是动态的。您可以使用这个 Playground 进行测试:

//: Playground - noun: a place where people can play

import Cocoa

func myFunction(date: Date = Date()) {
print("Using date \(date)")
}

myFunction()
sleep(3)
myFunction()

等待 3 秒后您将看到日期发生变化,因此它会在第二次调用时创建一个新的 Date...也许您的可达性代码中存在错误?

关于Swift 默认参数使用缓存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152104/

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