Is there a way to declare an unnamed local enum?
The kind of enum that can only be used as a parameter or a return value of a specific func.
I could use an Int. Or could use an optional<Bool> to handle three diferent cases. But these are too unspecific.
The other option would be to declare a global enum, or a class enum. But those are ugly and cumbersome.
I would instead, like to do something like:
func makeDinner() -> enum(case: Ready, Ruinned, Cooking) {
return .Ready
}
if makeDinner() == .Ruinned {
apologiseToClients()
}
And something like:
func drawPolygon( polytype: enum(case: Triangle, Square, Elipse) ) {
switch polytype {
case .Triangle: drawTriangle()
case .Square: drawSquare()
case .Ellipse: drawElipse()
}
}
drawPolygon(.Square)
But as far as I could find,
I can only do:
enum makeDinner_FuncEnum { // Can be a very long and weird enum name
case Ready, Ruinned, Cooking
}
func makeDinner() -> makeDinner_FuncEnum { // enum will not be used anywhere else
return .Ready
}
or,
func makeDinner() -> Int {
return 0 //utterly unspecific
}
if makeDinner() == 1 { //what does 1 mean??
apologiseToClients()
}