Hi all,
I want to make a discussion about union type for swift 4.
See
https://github.com/frogcjn/swift-evolution/blob/master/proposals/xxxx-union-type.md
<https://github.com/frogcjn/swift-evolution/blob/master/proposals/xxxx-union-type.md>
Add union type grammar, represents the type which is one of other types.
var stringOrURL: String | URL = "https://www.apple.com"
Now, if we using the new union type feature, we can declare type conveniently,
No other type declaration, and compiler will automatically calculate the common
interface.
func input(value: A | B | C) {
print(value.commonProperty) // type checker will calculate the common
interface, developer just use it out of box
switch value {
case let value as A:
// value is type A
print(value.propertyInA)
case let value as B:
// value is type B
print(value.propertyInB)
case let value as C:
// value is type C
print(value.propertyInC)
}
// there is no default case other than A, B or C. we already declared that.
}
Note: A, B, C can be either class or protocol, or any other types. This leaves
developer more freedom.
Impact on existing code
This is a new feature, developer who need declare common type will alter to
this new grammar.
Enum based version optional or IUO will be replaced by Union-based ones. Any
optional type will automatically replaced by union type
<https://github.com/frogcjn/swift-evolution/blob/master/proposals/xxxx-union-type.md#detailed-design>_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution