我不确定自己的头衔是否明确。在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
我从未使用过Swift,但是似乎您有一个可变的值,当您将其分配给新变量时,该值会被复制。在Kotlin中,您不能有这种类型。当给新变量赋值时,仅引用被复制,并且仍指向相同的确切存储位置。
您可以使用一个数据类,它为您提供一种方便的复制方法:
data class Movement(val name: String, val reps: Int)
val movement1 = Movement("Push Ups", 20)
val movementA = movement1.copy(reps = 30)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句