是否存在确定类型应可使用字符串初始化的协议?
Does a protocol exist that determines a type should be initializable with a String?
我编写了以下代码来帮助将文本值从表单字段转换为预期值:
protocol StringConvertableValueType {
init?(_ string: String)
}
extension Int: StringConvertableValueType {
}
extension String: StringConvertableValueType {
}
extension Double: StringConvertableValueType {
}
extension Float: StringConvertableValueType {
}
如您所见,所有这些原始类型本身已经支持相同的初始化程序。然而倾注在 documentation 我找不到任何共享 protocol
这样做。虽然感觉我正在重新做一些已经被建立 Foundation 的人做过的事情。
是否已经存在某种 protocol
来解决这个问题,或者构建 Foundation
的人只是确保 API 确实一致,但没有强制执行的协议是吗?
我相信您正在寻找的是LosslessStringConvertible
。 Int
继承自 FixedWidthInteger
。这种瞬态协议继承不会出现在符合类型的文档中。 (这可能会造成混淆,如果给您带来麻烦,您可能需要 open a radar 来扩展文档。)
我编写了以下代码来帮助将文本值从表单字段转换为预期值:
protocol StringConvertableValueType {
init?(_ string: String)
}
extension Int: StringConvertableValueType {
}
extension String: StringConvertableValueType {
}
extension Double: StringConvertableValueType {
}
extension Float: StringConvertableValueType {
}
如您所见,所有这些原始类型本身已经支持相同的初始化程序。然而倾注在 documentation 我找不到任何共享 protocol
这样做。虽然感觉我正在重新做一些已经被建立 Foundation 的人做过的事情。
是否已经存在某种 protocol
来解决这个问题,或者构建 Foundation
的人只是确保 API 确实一致,但没有强制执行的协议是吗?
我相信您正在寻找的是LosslessStringConvertible
。 Int
继承自 FixedWidthInteger
。这种瞬态协议继承不会出现在符合类型的文档中。 (这可能会造成混淆,如果给您带来麻烦,您可能需要 open a radar 来扩展文档。)