我正在尝试创建一个交换函数,它接受两个参数,如下所示:
fun swap(a :Int, b:Int) {
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
var a = 10
var b = 5
swap(a,b)
// a should be 5
// b should be 10
Run Code Online (Sandbox Code Playgroud)
问题是,即使我交换了交换函数内的值,它也不会反映在调用者的一侧,因为它是作为副本而不是作为引用传递的。
反正有没有将值类型传递给交换函数并允许函数改变它们的能力。
我试图设置一个属性值,如下面的代码片段所示.这个问题并没有回答这个问题.
var person = Person("john", 24)
//sample_text.text = person.getName() + person.getAge()
var kon = person.someProperty
person.someProperty = "crap" //this doesn't allow me to set value
kon = "manulilated" //this allows me to set the value
sample_text.text = kon
class Person(val n: String, val a: Int){
var pname: String = n
var page: Int = a
var someProperty: String = "defaultValue"
get() = field.capitalize()
private set(value){field = value}
fun Init(nm: String, ag: Int){
pname = nm
page = ag …Run Code Online (Sandbox Code Playgroud) 我需要让一个班级引用另一个班级。不是创建它的副本,而是对已经存在的实例进行实际引用。
我也许可以用一个例子更好地解释它。我们有没有课Image:
class Image(imgPath: String) {
val height : Int
val width : Int
val rgbMatrix: MutableList< MutableList< Triple<Int, Int, Int> > >
/* ... etc. ... */
}
Run Code Online (Sandbox Code Playgroud)
现在说我想要一个ImageManager只引用一个已经存在的类Image:
class ImageManager(val img: Image) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
所以我可以有这种行为:
val image = Image("/res/images/image.png")
val imageManager = ImageManager(image)
// Setting the pixel at (125, 25) to black
imageManager.img.rgbMatrix[125, 25] = Triple(0, 0, 0)
// Should print the update value(0, 0, 0)
print( image.rgbMatrix[125, 25] …Run Code Online (Sandbox Code Playgroud)