gpt4 book ai didi

swift - 需要解释双标签函数声明

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:48 24 4
gpt4 key购买 nike

当我偶然发现这段语法时,我正在阅读苹果文档:

struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
print("The point is now at (\(somePoint.x), \(somePoint.y))")
// Prints "The point is now at (3.0, 4.0)"

有人可以解释为什么 moveBy(x deltaX: Double, y deltaY: Double) 在参数上有双标签吗?

最佳答案

简短回答:第一个参数标签用于外部调用者,第二个参数标签用于本地方法内使用。

func moveBy(x deltaX: Double, y deltaY: Double) 调用时如下所示:moveBy(x: 1, y: 1),但在方法内部使用了 deltaXdeltaY 标签。

这种命名风格不是必需的,你可以声明方法func moveBy(x: Double, y: Double) 所以xy 将在方法内部使用。

为了支持遗留风格,所以从调用者范围来看,你的方法看起来像 moveBy(1, 1),你应该将 _ 作为第一个参数标签:func moveBy(_ deltaX: Double, _ deltaY: Double)。 CocoaTouch 中使用此类声明来支持遗留的 obj-c 接口(interface)(例如 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool)。

关于swift - 需要解释双标签函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854006/

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