我正在尝试学习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错误吗?
答案 0 :(得分:3)
Int
是Int
而String
是String
;解构不会在类型之间转换。因此,您指定的代码将无法编译,但以下内容将为:
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