![](/img/trans.png)
[英]Assignments are not expressions, and only expressions are allowed in this context - Error when convert Java to 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.