我编写了以下代码来帮助将表单字段中的文本值转换为期望值:
protocol StringConvertableValueType {
init?(_ string: String)
}
extension Int: StringConvertableValueType {
}
extension String: StringConvertableValueType {
}
extension Double: StringConvertableValueType {
}
extension Float: StringConvertableValueType {
}
如您所见,所有这些原始类型本身都支持相同的初始化程序。然而,倾泻于documentation我找不到任何共享的protocol
这样做。虽然感觉我正在重新做一些已经由建立基金会的人做的事情。
有没有某种protocol
可以解决这个问题,或者构建Foundation
的人只是确保API确实是一致的,但是没有协议强制执行它?
我相信你要找的是LosslessStringConvertible
。 Int
从FixedWidthInteger
继承了这个。此瞬态协议继承未显示在符合类型的文档中。 (这可能令人困惑,如果给你带来麻烦,你可能希望open a radar扩展文档。)