Daniel Pitts
12/20/2023, 2:21 AMclass Else<R> private constructor(private val value: Any?) {
infix fun `else`(alternative: () -> R): R =
if (value == IsNot) alternative() else value as R
companion object {
private object IsNot
fun <R> `is`(value: R) = Else<R>(value)
fun <R> `isn't`() = Else<R>(IsNot)
}
}
fun <R> `if`(condition: Boolean, value: () -> R) = if (condition) Else.`is`(value()) else Else.`isn't`()
electrolobzik
12/20/2023, 7:50 AMDaniel Pitts
12/20/2023, 7:28 PMelse
in an if/else.
fun foo(helloWorld:String) =
`if` ("hello world" == helloWorld) {
handleHelloWorld()
}
fun bar(str: String) =
foo(str) `else` {
println("It wasn't Hello World.")
}
electrolobzik
12/20/2023, 7:30 PMDaniel Pitts
12/20/2023, 7:32 PMprivate fun <R> withActiveWindow(active: (GLFWwindow) -> R): Else<R> {
main.checkThread()
return `if`(glfwWindow != NO_WINDOW) { active(glfwWindow) }
}
var title: String = ""
set(value) {
withActiveWindow {
glfwSetWindowTitle(it, field)
} `else` { field = title }
}
Daniel Pitts
12/20/2023, 7:33 PMDaniel Pitts
12/20/2023, 7:35 PMelectrolobzik
12/20/2023, 7:36 PMDaniel Pitts
12/20/2023, 7:38 PM