簡體   English   中英

分配不是表達式,在這種情況下只能使用表達式-Kotlin

[英]Assignments are not expressions and only expressions are allowed in this context - Kotlin

將java轉換為kotlin時出現錯誤,無法理解如何解決此特定錯誤。

internal fun getDiff(to: Calendar, from: Calendar): Long {

        var diffInSeconds = (to.time.time - from.time.time) / 1000

        val diff = longArrayOf(0, 0, 0, 0)
        diff[3] = if (diffInSeconds >= 60) diffInSeconds % 60 
                    else diffInSeconds // sec
        diff[2] = if ((diffInSeconds = diffInSeconds / 60)>= 60)
                         diffInSeconds % 60
                 else
                        diffInSeconds // min
        diff[1] = if ((diffInSeconds = diffInSeconds / 60) >= 24)
                        diffInSeconds % 24
                 else
                        diffInSeconds // hour
        diff[0] = (diffInSeconds = diffInSeconds / 24) // day

        Log.e("days", diff[0].toString() + "")

        return diff[0]
}

(diffInSeconds = diffInSeconds / 60)行: (diffInSeconds = diffInSeconds / 60)顯示錯誤顯示

分配不是表達式,並且在此上下文中僅允許表達式

您不能做這樣的事情:

diffInSeconds = diffInSeconds / 60

如果,kotlin不支持。 您必須在if之前或之后將其提取。

例如

internal fun getDiff(to: Calendar, from: Calendar): Long {

    var diffInSeconds = (to.time.time - from.time.time) / 1000

    val diff = longArrayOf(0, 0, 0, 0)
    diff[3] = if (diffInSeconds >= 60) diffInSeconds % 60
    else diffInSeconds // sec
    diffInSeconds /= 60
    diff[2] = if (diffInSeconds >= 60)
        diffInSeconds % 60
    else
        diffInSeconds // min
    diffInSeconds /= 60
    diff[1] = if (diffInSeconds >= 24)
        diffInSeconds % 24
    else
        diffInSeconds // hour
    diffInSeconds /= 24
    diff[0] = (diffInSeconds) // day


    return diff[0]
}

語法無效,因為diffInSeconds = diffInSeconds / 60在Kotlin中不是表達式。 只是這樣做

var a = diffInSeconds /= 60
diff[1] = if (a >= 24)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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