簡體   English   中英

將Java轉換為Kotlin后出現“賦值不是表達式錯誤”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM