3 ms·
Thanks for that information. I had thought enums can only be used as named types. Good to know they can hold data as well. I had though of that struct as well (
by I_am_tiberius 9y ago
Thanks for that information. I had thought enums can only be used as named types. Good to know they can hold data as well. I had though of that struct as well (ok, not in that professional way with types as constants and iota:-)) but found it a bit annoying that I have to store a type myself although the type itself should already have the type information somewhere itself - consequently that information is stored reduntantly. But I'll definitely try that. Thanks.
- eropple 9y agoFWIW, "enums" are in most languages you'll run into somewhat distinct from "enum types".
- masklinn 9y ago> I had thought enums can only be used as named types. Good to know they can hold data as well. That depends on the language, and enums being sum types also depends on the language. * Rust and Swift enums are sum types (they can hold data and every variant can hold different stuff), there is also a ton of (mostly functional) languages with sum types not called enum: Haskell, F#, OCaml, … there are also languages which replicate them via other structures (sealed classes in Kotlin, case classes in Scala). * java enums (a bare "enum" is the C one) can hold data but every variant must hold data of the same type so you'd need up/down casts * C++, C# and C enums can't hold data Go does not have enums.
- pjmlp 9y agoC++17 has support for sum types via std::variant.
- matt_kantor 9y agoMinor nitpick: case classes in Scala are product types, not sum types. I think you meant "sealed traits".
- masklinn 9y agoThe combination of both really.