赋值不是表达式,在此上下文中只允许使用表达式-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

在if中,它没有得到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)

最新更新