在
Swift中直到并包括
Swift 3,我无法创建一个单元素元组,其中元素被命名.所以func foo() – >酒吧很好,而func foo() – > (bar:Bar)产生编译错误.
但是,我可以想到这种模式的一些可能用途,例如:
func putTaskOnQueue() -> (receipt: CancellableTask) func updateMyThing() -> (updatedSuccessfully: Bool)
…标签用于减少返回值代表什么的歧义.
显然,有很多方法可以重新设计我的apis以解决这个限制,但我很好奇为什么它存在.
这是编译器限制吗?是否允许1元组上的元素标签破解其他一些语法的解析?这已经作为Swift Evolution系统的一部分进行了讨论吗?
需要明确的是:我不是就上述例子的正确性征求意见.我正在解释为什么这在技术上是不可能的解释(如果存在的话).