[swift-evolution] Proposal: CustomConvertible protocol
Adrian Zubarev
adrian.zubarev at devandartist.com
Fri Dec 4 07:51:25 CST 2015
We have finally a corner where people can share their ideas on how Swift can be improved, and I’m glad my ideas might be part of this fun.
Swift introduced a few Convertible protocols, but it still needs some more If you ask me.
Something like this:
public protocol CustomConvertible {
typealias CustomType
public init(value: Self.CustomType) // or in a better way I can't come up with
}
But it should work in a way that we could create more different types like enums and ErrorType.
protocol AConvertible: CustomConvertible { /* some stuff here*/ }
protocol BConvertible: CustomConvertible { /* some stuff here*/ }
struct A {
var foo: Int = 0
}
struct B {
var boo: String = "Hello World"
}
struct C: AConvertible, BConvertible {
typealias CustomAType = A
typealias CustomBType = B
var magical: SomeType
init(value: CustomAType) {
// implement it
}
init(value: CustomBType) {
// implement it
}
}
//===========================
let firstC: C = A() // this is what I'm missing in Swift
let secondC: C = B() // this would be a great syntax sugar
What do you think?
—
Regards Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151204/877dfd93/attachment.html>
More information about the swift-evolution
mailing list