Предполагаемый тип означает, что компилятор получил тип данных объекта.
Итак, val b = 4.33
- это Double (на основе компилятора kotlin).
Так что он принимает 'b' как Double везде.
Если вы хотите, чтобы переменная присваивалась различным типам данных, вам придется использовать Any
class
, как
fun main(vararg abc : String) {
var b : Any = 4.33 // inferred type of what
println(b)
if(b is Float) {
println("Float")
}
else if(b is Double) {
println("Double")
}
b = "hello"
println(b)
if(b is String) {
println("String")
}
}
выходы в
4.33
Double
hello
String
Здесь Any
совпадает с Object
классом из java и может содержать данные любого типа, и вы должны позаботиться о типе объекта