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 > <swift-evolution@swift.org> 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 > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution