[英]“Assignments are not expressions error” after converting Java to Kotlin
我將一些Java類轉換為kotlin並在嘗試運行在Java中運行良好的代碼時彈出了“賦值不是表達式,並且只允許在此上下文中使用表達式”錯誤:
@Throws(IOException::class)
private fun readAll(rd: Reader): String {
val sb = StringBuilder()
var cp: Int
while ((cp = rd.read()) != -1) {
sb.append(cp.toChar())
}
return sb.toString()
}
導致問題的行:
while ((cp = rd.read()) != -1)
就像消息在Kotlin中所說的那樣,您不能將賦值用作表達式。 你可以這樣做:
private fun readAll(rd: Reader): String {
val sb = StringBuilder()
var cp: Int
do {
cp = rd.read()
if (cp == -1)
break
sb.append(cp.toChar())
} while (true) // your choice here to stop the loop
return sb.toString()
}
在Kotlin中,您無法執行以下操作:
while ((cp = rd.read()) != -1)
您應該使用這樣的東西:
var cp = rd.read()
while (cp != -1) {
// your logic here
cp = rd.read()
}
或類似這樣的東西:
while (true) {
val cp = rd.read()
if (cp < 0) break
// your logic here
}
因為賦值( cp = rd.read()
)是Java中的表達式,但不是Kotlin中的表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.