gpt4 book ai didi

swift - 我不能有一个带有元素标签的单元素元组有客观原因吗?

转载 作者:IT王子 更新时间:2023-10-29 05:36:11 24 4
gpt4 key购买 nike

在包括 Swift 3 在内的 Swift 中,我无法在元素命名的地方创建单元素元组。所以 func foo() -> Bar 没问题,而 func foo() -> (bar: Bar) 会产生编译器错误。

但是,我可以想到这种模式的一些可能用途,例如

func putTaskOnQueue() -> (receipt: CancellableTask)

func updateMyThing() -> (updatedSuccessfully: Bool)

...其中标签用于减少返回值表示的歧义。

显然,我可以通过多种方式重新设计我的 API 来解决此限制,但我很好奇它存在的原因。

这是编译器限制吗?允许 1 元组上的元素标签会破坏对其他一些语法的解析吗?这是否作为 Swift Evolution 系统的一部分进行了讨论?

需要说明的是:我并不是就上述示例的正确性征求意见。我正在寻求解释(如果存在的话)为什么这在技术上是不可能的。

最佳答案

是的,这是由于编译器的限制。 Swift 中根本没有单元组。每个 T 都可以简单地转换为 (T)SE-110SE-111应该有所改进,但我不确定这是否足以使这成为可能,而且我不相信当前的任何提案都明确地使它成为可能。

在swift-evolution上已经讨论过了。这不是该语言的理想功能;这是其他选择的结果。

Swift Evolution 过程非常开放。我强烈建议将这样的问题添加到列表中(在搜索文件之后;不可否认,这并不像您希望的那样简单)。 StackOverflow 只能给出道听途说;该列表更加明确。

关于swift - 我不能有一个带有元素标签的单元素元组有客观原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559382/

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