在java 中,我们可以将int
分配给double
,例如double x = 123
;
在kotlin 中,我们遇到了编译错误。
问题:我们可以在kotlin
中启用自动转换功能吗?为什么kotlin
默认没有此功能?
var x: Double = 123; // ERROR
又一个例子:
fun foo(x: Double) { }
fun main(args: Array<String>) {
foo(123.0); // OK
foo(123); // ERROR
}
更新
文字123
可以在编译时自动转换为Short
或Long
。但它不会转换为Float
或Double
。
fun fooShort(x: Short) {}
fun fooInt(x: Int) {}
fun fooLong(x: Long) {}
fun main(args: Array<String>) {
fooShort(123) // OK
fooInt(123) // OK
fooLong(123) // OK
}
答案 0 :(得分:4)
没有。这不会发生。由于 date date_value
0 2016-06-01 07:00:00 green
1 2016-06-02 07:00:00 green
2 2016-06-03 07:00:00 green
3 2016-06-04 07:00:00 green
是强类型的,因此类型不会被隐式强制。您需要显式类型转换。从Explicit Conversions的Kotlin参考文献中可以看出:
由于表示不同,较小的类型不是较大类型的子类型。 [...] 因此,较小的类型不会隐式转换为更大的类型。 [...] 我们可以使用显式转换来扩大数字。