整型字面量的那些事

整型字面量的那些事,第1张

概述作者:Erica Sadun,原文链接,原文日期:2016/06/28 译者:Cwift;校对:pmst;定稿:Cee 昨晚我发了一条推特邀请开发者们参与一个问题的调查。相当一部分人问我这个调查是怎么回事。 Swift 标准库中一些类型转换相关的协议,Matthew Johson 和我观点相同,认为命名非常糟糕。标准库中大约存在 80 个古怪的协议,其中大约 15% 都与类型转换相关。 因此我们递

作者:Erica Sadun,原文链接,原文日期:2016/06/28
译者:Cwift;校对:pmst;定稿:Cee

昨晚我发了一条推特邀请开发者们参与一个问题的调查。相当一部分人问我这个调查是怎么回事。

Swift 标准库中一些类型转换相关的协议,Matthew Johson 和我观点相同,认为命名非常糟糕。标准库中大约存在 80 个古怪的协议,其中大约 15% 都与类型转换相关。

因此我们递交了一份有关重命名的提案,不过最终被否决了。标准库团队倾向于使用新的 Syntax 命名空间,而我们的提案侧重于命名方面的指导。他们的答复是具体问题具体分析,在不违背哲学的前提下,Swift 的革新提案需要着眼真实世界进行设计,而不是单纯的理论指导。我和标准库团队没能达成共识,不过讨论还在持续,因为 WWDC 过后这些问题还是没能得到解决。最近 Matthew Johson 已经在起草一份新的提案了。

当某个类型遵循 IntegerliteralConvertible 协议后,意味着「允许一个整型字面量被解释成该类型的实例」。想要这样的行为发生,协议遵守者必须实现指定的构造器,该构造器接受一个 Int 类型的参数。

// 协议的遵守者可以使用整型字面量进行初始化public protocol IntegerliteralConvertible {    associatedtype IntegerliteralType    // 创建一个实例,并用 `value` 进行初始化    public init(integerliteral value: Self.IntegerliteralType)}

我认为使用下面的表达方式来阐述这个协议会更清晰:

// 遵守该协议后,协议的遵守者可以使用整型字面量表示////// let instance: T = *integer literal*//// // 比如:// //// let myDouble: Double = 2 // 整型字面量 2 自动转型成了 Double// let anotherDouble: Double = myDouble * 5 // 整型字面量 5 自动转型成了 Double////public protocol name_TO_BE_DETERmineD {    //  约束整型字面量,字面量默认会被识别成Int类型    associatedtype IntegerliteralType    //  创建一个实例,并用 `value` 进行初始化    //  构造器内部的语法必须可以被替换    public init(integerliteral value: Self.IntegerliteralType)}

协议命名是一个棘手的问题。参与讨论的成员建议使用 Syntax.IntegerliteralSyntax.IntegerliteralExpressible,我认为二者都有不足的地方。而且上述的命名方式也并不能够表达使用协议的初衷。

昨晚我向 Swift 开发者们发推询问了有关 Syntax.IntegerliteralExpressible 的含义,这里是回复结果。大约九成的人认为它的含义是「协议的遵守者可以像整型字面量那样来展示自己」。在这个链接页面的顶部有一个标签,你可以在「问题摘要」和「个人回答」间进行切换,然后就可以看到参与调查者对选项的解释。

更新:戴夫·亚伯拉罕的回复:

你所提供的选项中,唯一看起来正确的答案不够优雅并且有一些错误——我曾说的是「协议遵守者的实例可以用整型字面量来表示」,你的答案大概匹配了原意的 90%,剩下的 10% 还差很多。
我只能告诉你,你的调查结果支持了我的意见。

虽然有关类型转换的协议的适用对象只是标准库中的类型,但是这些协议(和它们的同胞协议们一样)可以被职业的 Swift 开发者看到、阅读并使用。就这一点来说,我认为追求好的命名规则是有价值的。希望 Swift 能用更好的命名取代形如 Syntax.AllowsIntegerliteralToBeInterpretedAsExpressionOfConformingType 这样的协议命名。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。

总结

以上是内存溢出为你收集整理的整型字面量的那些事全部内容,希望文章能够帮你解决整型字面量的那些事所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1073317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存