gpt4 book ai didi

class - Kotlin 值与赋值中的引用

转载 作者:行者123 更新时间:2023-12-02 13:09:22 30 4
gpt4 key购买 nike

我需要一个类引用另一个类。不创建它的副本,但实际引用已经存在的实例。

我也许可以用一个例子更好地解释它。如果我们有一个类 Image:

class Image(imgPath: String) {
val height : Int
val width : Int
val rgbMatrix: MutableList< MutableList< Triple<Int, Int, Int> > >

/* ... etc. ... */
}

现在说我想要一个类 ImageManager,它只引用一个已经存在的 Image:

class ImageManager(val img: Image) {
/* ... */
}

所以我可以有这种行为:

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] )

我的问题是:

  1. 在 Kotlin 中,in assignment 何时分配引用,何时分配副本?

  2. 我如何确定什么时候发生的分配?

  3. 官方文档中有详细说明吗?如果有我找不到。

提前致谢!

最佳答案

Similar to Java , Kotlin 从不隐式复制对象赋值。变量总是保存对对象的引用,将表达式分配给变量只会复制对对象的引用,而不是对象本身。

在底层,每个值要么是一个原始值(IntBooleanChar 等),要么是一个引用。赋值时,结果要么是原语的副本,要么是对同一对象的引用的副本,这永远不会导致被引用的对象被复制。

据我所知,这种行为没有明确记录;相反,假定它与 Java 中的相同。

另请参阅:Is Kotlin “pass-by-value” or “pass-by-reference”?

关于class - Kotlin 值与赋值中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49585498/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com