gpt4 book ai didi

kotlin - 表达时自定义Kotlin

转载 作者:行者123 更新时间:2023-12-02 13:39:18 25 4
gpt4 key购买 nike

我真的是Kotlin的新手,我想要的是:

when_assert_no_else {
CONDITION0 -> {
doSomething0()
}
CONDITION1 -> {
doSomething1()
}
}

就像
when {
CONDITION0 -> {
doSomething0()
}
CONDITION1 -> {
doSomething1()
}
else -> {
throw RuntimeException()
}
}

后面的代码片段在我的项目中占了很多时间,我想通过抛出异常来断言控制流没有到达 else块。

或者,是否可以通过提供 when的实现来自定义 when_assert_no_else关键字?

有什么想法吗?谢谢。

最佳答案

由于kotlin没有->运算符,因此您无法编写以上代码,但是您可以做出一些妥协,例如:改用Pair<()->Boolean,()->T>

fun test(): Int = when_assert_no_else(
{ true } to { 1 },
{ false } to { 2 }
)



fun <T> when_assert_no_else(vararg cases: Pair<() -> Boolean, () -> T>): T {
// v--- short-circuiting terminal operation
return cases.find{ it.first() }
.let { it ?: throw RuntimeException() }
.second()
}

关于kotlin - 表达时自定义Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44868618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com