Created
November 3, 2016 11:18
-
-
Save lucaswerkmeister/effe0e1665891d37b1c087ab9162ee8f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ceylon.language.meta.model { | |
ClassOrInterface | |
} | |
shared interface Enumeration<Element> of Element | |
given Element satisfies Enumeration<Element> { | |
shared static Element? byName(String name) { | |
assert (is ClassOrInterface<Element> coi = `Element`); | |
return coi.caseValues.find((element) => name == element.name); | |
} | |
shared formal String name; | |
} | |
shared abstract class Season(shared actual String name) | |
of spring | summer | fall | winter | |
satisfies Enumeration<Season> {} | |
shared object spring extends Season("spring") {} | |
shared object summer extends Season("summer") {} | |
shared object fall extends Season("fall") {} | |
shared object winter extends Season("winter") {} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment