繁体   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