2017-03-14 5 views
0

私はKotlinを習得しようとしており、このサンプルコードをREPLに書いています。 次のコードはクラッシュしません。 Androidのメーカー2.3以下のコードで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) 
>>> 

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

を失敗した、これはREPLのバグですか?

答えて

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 
+0

です。ありがとう!! –

+0

REPLではなぜそれが機能しましたか? – marstran

+1

ありがとう@marstran。私はREPLで働いているように見えたのです。そのような問題に対処するための私の答えを更新しました。 – mfulton26