【发布时间】:2026-02-03 15:35:02
【问题描述】:
我不确定我是否清楚我的头衔。在 Swift 中,我有这个结构。
struct Movement {
let name: String
var reps: Int
}
let movement1 = Movement(name: "Push Ups", reps: 20)
var movementA = movement1
movementA.reps = 30
print(movement1.reps) // Prints 20
print(movementA.reps) // Prints 30
在 Kotlin(或 Java)中有什么替代方案?问题是在我的应用程序中,我有一个包含多个动作的锻炼。我将这些动作附加到 MutableList 中,当我进行重复动作的锻炼时出现问题。
例如当我想像这样进入锻炼时:
20 个俯卧撑
30 个引体向上
40 个俯卧撑
我最终得到:
40 个俯卧撑
30 个引体向上
40 个俯卧撑
首先,我选择动作 #1 并设置动作 #1 的次数,但是当我选择动作 #3 并设置动作次数 #3 时,它会覆盖动作 #1 的变量。
有什么想法吗?
我尝试过类似的方法,但没有成功。
class Movement(name: String) {
var reps: Int? = null
}
val movement1 = Movement("Push Ups")
movement1.reps = 20
var movementA = movement1
movementA.reps = 30
Log.i("REPS1: ", movement1.reps.toString()) // 30
Log.i("REPSA: ", movementA.reps.toString()) // 30
【问题讨论】:
-
Java 有
Object.clone(),它可以在任何标记为Cloneable的东西上工作(嗯,做某事)。但我不知道这种机制在 Kotlin 中是如何出现的。 -
为什么不能只创建一个
Movement的新实例,而不是将其分配给另一个变量? -
Java 在处理副本方面有点奇怪,但这里有一些关于该主题的不错的 SO 线程:*.com/questions/6182565/… 和 *.com/questions/869033/…
标签: java android ios swift kotlin