[swift-evolution] Require parameter names for ENUM Associated Types?
Adrian Zubarev
adrian.zubarev at devandartist.com
Tue Nov 29 10:12:46 CST 2016
As I said before, the associated values can be excluded for pattern matching. I believe this way you can check against the enum case without producing any copy of the associated types right?!
var _kind: Byte {
switch self {
…
case .javaScript: return 0x0D
case .scopedJavaScript: return 0x0F
…
}
}
Assume we could overload the values by including additional labels to the enum case.
case javaScript(String)
case javaScript(String, scope: Document) // or more swifty `javascript(String, withScope: Document)`
Now I could check the case like this to solve the ambiguity.
switch self {
…
case .javaScript: return 0x0D
case .javaScript(_:withScope:): return 0x0F
…
}
Plus I don’t want to wrap values in optionals when there is no need for that.
--
Adrian Zubarev
Sent with Airmail
Am 29. November 2016 um 17:03:12, Tony Allevato (allevato at google.com) schrieb:
Why not:
```
case javascript(String, scope: Document?)
```
Your desired scenario looks like it's conceptually expressing that Document is optional, so why not use the type to codify that?
On Tue, Nov 29, 2016 at 7:59 AM Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
Hmm, I feel like default values wouldn’t work with overloaded enum cases.
In my own project I have something like this:
case javaScript(String)
case scopedJavaScript(String, scope: Document)
// But I'd like it to be:
case javaScript(String)
case javaScript(String, scope: Document)
--
Adrian Zubarev
Sent with Airmail
Am 29. November 2016 um 16:55:52, Charles Srstka (cocoadev at charlessoft.com) schrieb:
On Nov 29, 2016, at 9:52 AM, Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
I just showed a direction of what could be possible.
Personally I think it would be enough if we had this:
enum MyEnum {
case a
case b(Int)
case b(Int, string: String)
}
Where .b can be overloaded by it’s associated types.
Or default values:
enum MyEnum {
case a
case b(Int, string: String = “SomeDefault”)
}
Charles
_______________________________________________
swift-evolution mailing list
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161129/72c3c4b6/attachment.html>
More information about the swift-evolution
mailing list