是否可以使用Kotlin';什么时候捕获?

是否可以使用Kotlin';什么时候捕获?,kotlin,Kotlin,我试着做一些类似的事情: data class Data(val valid: Boolean) fun main() { println("Hello, world!!!") when (val data = Data(true)) { data.valid -> println("Valid") else -> println("Invalid") } } 但我

我试着做一些类似的事情:

data class Data(val valid: Boolean)

fun main() {
    println("Hello, world!!!")
    when (val data = Data(true)) {
        data.valid -> println("Valid")
        else -> println("Invalid")
    }
}
但我有一个错误:

Incompatible types: Boolean and Data

是否可以使用
->
左侧的
数据
?我知道我可以做
is Data
,因此变量显然在范围内,但是有其他方法访问它吗?

您可以使用密封类。例如

密封类数据{
对象有效:数据()
对象无效:数据()
伴星{
趣味创建(有效:布尔):数据{
返回if(有效){
数据。有效
}否则{
数据无效
}
}
}
}
用法:

fun main(){
println(“你好,世界!!!”)
何时(Data.create(true)){
is Data.Valid->println(“有效”)
是数据。无效->打印项次(“无效”)
}
}

我不这么认为,左侧只支持:相等、类检查和范围检查。如果要检查布尔条件,则需要在时使用无参数
。否。您可以分离变量的声明,然后在{data.valid->…
时写入
,但不能在
时将
数据的定义集成到
中。