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