Quincey and Stephen Thank you for your great input. And..yes..it does compile!!! :-)
> On Jul 17, 2015, at 1:57 PM, Stephen J. Butler <[email protected]> > wrote: > > Or what about this? Tested this time... > > enum Foo { > case Bar > case Etc > case Etc_Etc > case Custom(String) > > func asString() -> String { > switch self { > case .Bar: return "Bar" > case .Etc: return "Etc" > case .Etc_Etc: return "Etc Etc" > case .Custom(let value): return value > } > } > > init(withString value: String) { > switch value { > case "Bar": self = .Bar > case "Etc": self = .Etc > case "Etc Etc": self = .Etc_Etc > default: > self = .Custom(value) > } > > } > } > > let a = Foo(withString: "Bar") > let b = Foo(withString: "Something Else") > > print("a = \(a.asString()); b = \(b.asString())") > > I guess more typing, and some room for error in the initializer, but it does > do away with the wrapper class. > > On Fri, Jul 17, 2015 at 3:39 PM, Quincey Morris > <[email protected] > <mailto:[email protected]>> wrote: > On Jul 17, 2015, at 13:33 , Stephen J. Butler <[email protected] > <mailto:[email protected]>> wrote: >> >> How about using a Custom option with an associated String value? >> >> enum Foo:String { >> >> case Bar = “Bar" >> case Etc = “Etc" >> case Etc_Etc = “Etc Etc" >> case Custom(String) >> } > > Unfortunately that won’t compile. One alternative is: > >> enum Foo: String { >> case Bar = "Bar" >> case Etc = "Etc" >> case Etc_Etc = "Etc Etc" >> } >> >> enum FooPlus { >> case AFoo (Foo) >> case AString (String) >> >> var asString: String { >> switch self >> { >> case let .AFoo (foo): return foo.rawValue >> case let.AString (string): return string >> } >> } >> } > > > _______________________________________________ Cocoa-dev mailing list ([email protected]) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
