[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