- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在包括 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-110和 SE-111应该有所改进,但我不确定这是否足以使这成为可能,而且我不相信当前的任何提案都明确地使它成为可能。
在swift-evolution上已经讨论过了。这不是该语言的理想功能;这是其他选择的结果。
Swift Evolution 过程非常开放。我强烈建议将这样的问题添加到列表中(在搜索文件之后;不可否认,这并不像您希望的那样简单)。 StackOverflow 只能给出道听途说;该列表更加明确。
关于swift - 我不能有一个带有元素标签的单元素元组有客观原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559382/
我想将句子分类为客观或主观。 例如: 目标:台北 101 是世界上最高的建筑。 主观:维纳斯·威廉姆斯是本十年最伟大的运动员。 我正在考虑使用朴素贝叶斯作为我的分类器。 我应该使用哪些数据进行训练?我
我目前正在自学 Objective-C 。我已经完成了教程,但我发现我在完成自己的项目时学得最好,所以我开始制作步步高应用程序。 现在我已经进入了中途,我意识到有些整体架构的东西我只是不明白。 我已经
我正在使用 Cocoapods 1.4.0、Visual Studio Community for Mac 7.3.3 (build 12)、Objective Sharpie 3.4.0-c0f0e
我是一名优秀的程序员,十分优秀!