加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 有客观原因我不能拥有带元素标签的单元素元组吗?

发布时间:2020-12-14 05:31:11 所属栏目:百科 来源:网络整理
导读:在 Swift中直到并包括 Swift 3,我无法创建一个单元素元组,其中元素被命名.所以func foo() – 酒吧很好,而func foo() – (bar:Bar)产生编译错误. 但是,我可以想到这种模式的一些可能用途,例如: func putTaskOnQueue() - (receipt: CancellableTask)func upd
在 Swift中直到并包括 Swift 3,我无法创建一个单元素元组,其中元素被命名.所以func foo() – >酒吧很好,而func foo() – > (bar:Bar)产生编译错误.

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

func putTaskOnQueue() -> (receipt: CancellableTask)

func updateMyThing() -> (updatedSuccessfully: Bool)

…标签用于减少返回值代表什么的歧义.

显然,有很多方法可以重新设计我的apis以解决这个限制,但我很好奇为什么它存在.

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

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

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

已经讨论过swift-evolution.这不是语言的理想特征;这是其他选择的结果.

Swift Evolution过程非常开放.我强烈建议将这样的问题列入清单(在搜索档案之后;当然不像你希望的那样简单). StackOverflow只能提供传闻;该清单更加明确.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读