整型字面量的那些事
昨晚我发了一条推特邀请开发者们参与一个问题的调查。相当一部分人问我这个调查是怎么回事。 Swift 标准库中一些类型转换相关的协议,Matthew Johson 和我观点相同,认为命名非常糟糕。标准库中大约存在 80 个古怪的协议,其中大约 15% 都与类型转换相关。 因此我们递交了一份有关重命名的提案,不过最终被否决了。标准库团队倾向于使用新的 当某个类型遵循 // 协议的遵守者可以使用整型字面量进行初始化 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) } 协议命名是一个棘手的问题。参与讨论的成员建议使用 昨晚我向 Swift 开发者们发推询问了有关 更新:戴夫·亚伯拉罕的回复:
虽然有关类型转换的协议的适用对象只是标准库中的类型,但是这些协议(和它们的同胞协议们一样)可以被职业的 Swift 开发者看到、阅读并使用。就这一点来说,我认为追求好的命名规则是有价值的。希望 Swift 能用更好的命名取代形如
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |