The “Swifty” way of doing such a thing is to have the types you care about
conform to a protocol that clearly defines the API you’re trying to expose. For
example:
protocol Fooable {
func doFoo()
}
extension Int: Fooable {
func doFoo() {
print("I’m an Int")
}
}
extension String: Fooable {
func doFoo() {
print("I’m a String")
}
}
Now, instead of a disjunctive Int | String union type you can just use Fooable
and call doFoo on it when necessary:
func doSomethingWithAFooable(_ foo: Fooable) {
foo.doFoo()
}
doSomethingWithAFooable(0) // prints: I’m an Int
doSomethingWithAFooable("") // prints: I’m a String
Saagar Jha
> On Jan 13, 2018, at 01:45, Daryle Walker via swift-evolution
> <[email protected]> wrote:
>
> From
> <https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md#miscellaneous
>
> <https://github.com/apple/swift-evolution/blob/master/commonly_proposed.md#miscellaneous>>.
>
> Maybe I’m not up on my Type Theory, but why should type constraint
> disjunctions be banned?
>
> —
> Daryle Walker
> Mac, Internet, and Video Game Junkie
> darylew AT mac DOT com
>
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution