gpt4 book ai didi

kotlin - Kotlin- `if`和 `when`表达式的类型

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

我知道Kotlin是一种静态类型的语言,并且所有类型都是在编译时定义的。

这是一个返回不同类型的when表达式:

fun main(){

val x = readLine()?.toInt() ?: 0

val y = when(x){
1 -> 42
2 -> "Hello"
else -> 3.14F
}

println(y::class.java)
}

在运行时(JVM 1.8上的Kotlin 1.3.41),这是输出:
x = 1时,将打印 class java.lang.Integer
x = 2时,将打印 class java.lang.String
否则,它将打印 class java.lang.Float
编译器何时确定 y的类型?或者,编译器如何在编译时推断 y的类型?

最佳答案

实际上,在这种情况下,when表达式的类型解析为Any,因此y变量可以具有任何值。 IDE甚至会警告您Conditional branch result of type X is implicitly cast to Any(至少Android Studio会这样做)以及Kotlin Playground

关于kotlin - Kotlin- `if`和 `when`表达式的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58479824/

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