像下面的两个函数一样,Swift首先执行哪个函数?
有它的模式吗?
因为我遇到了两个比这更复杂的功能.它首先执行“Any”,无论我对它们做什么顺序(因为我假设它从内存地址执行但似乎没有).
有人说由于其更广泛的结构或类,它将执行“任何”(在我的另一种情况下).但下面的例子说明了相反的情况.
想知道为什么以及如何发生这种情况或者我能在哪里得到答案.
import UIKit func add(_ x: Int,_ y: Any) -> Int { return 3 } func add(_ a: Int,_ b: Int) -> Int { return 1 } print(add(2,3)) // "1\n" print(add(2,"3")) // "3\n"
这是我的另一个案例:
let constraint = titleLabel.layout(.width,.lessThanOrEqual,122)
这是我期望执行的:
func layout(_ attribute: NSLayoutAttribute,_ relatedBy: NSLayoutRelation,_ constant: CGFloat,active: Bool = true,priority: UILayoutPriority = .init(1000)) -> NSLayoutConstraint {}
但它实际执行这个:
func layout(_ attribute: NSLayoutAttribute,_ toItem: Any?,priority: UILayoutPriority = .init(1000)) -> NSLayoutConstraint {}
如果swift选择最具体的一个,它不应该执行“Float”吗?