Skip to content

Instantly share code, notes, and snippets.

@L-Briand
Created February 15, 2023 09:01
Show Gist options
  • Save L-Briand/def163db353d61cdbc3e42132deef8a7 to your computer and use it in GitHub Desktop.
Save L-Briand/def163db353d61cdbc3e42132deef8a7 to your computer and use it in GitHub Desktop.
inline fun <reified T : Enum<T>> enumGetBy(default: T, predicate: (T) -> Boolean): T =
enumGetByOrNull(predicate) ?: default
inline fun <reified T : Enum<T>> enumGetByOrNull(predicate: (T) -> Boolean): T? =
enumValues<T>().find(predicate)
inline fun <reified T : Enum<T>> enumGetByName(name: String, default: T): T =
enumGetBy(default) { it.name == name }
inline fun <reified T : Enum<T>> enumGetByNameOrNull(name: String): T? =
enumGetByOrNull<T> { it.name == name }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment