Kotlin REPL解构声明不适用于Pair

时间:2017-03-14 23:09:40

标签: kotlin

我正在尝试学习Kotlin并在REPL中编写了这个示例代码。 以下代码不会导致崩溃。

Welcome to Kotlin version 1.1.0 (JRE 1.6.0_65-b14-468-11M4833)
Type :help for help, :quit for quit
>>> val (a:String, b:Int) = Pair(1,2)
>>> 

在Android Studio 2.3中,以下代码失败

val (a:String, b:Int) = Pair(1,2) // 'component1() function returns 'Int', but 'String' is expected

这是REPL错误吗?

1 个答案:

答案 0 :(得分:3)

IntIntStringString;解构不会在类型之间转换。因此,您指定的代码将无法编译,但以下内容将为:

val (a: String, b: Int) = Pair("1", 2)
val (c: Int, d: Int) = Pair(3, 4)

请注意,不必明确指定类型:

val (a, b) = Pair("1", 2)
val (c, d) = Pair(3, 4)

我不确定为什么REPL会无声地失败但是REPL中的以下内容会导致"未解析的引用"错误很明显,解构不起作用,但REPL没有报告错误等。这似乎是一个已知问题:KT-5620

Welcome to Kotlin version 1.1.0 (JRE 1.8.0_111-b14)
Type :help for help, :quit for quit

val (a, b) = Pair(1, 2)
println(a) // Error: Unresolved reference: a