以下面的代码为例,
var a = new StringBuffer("Foo!")
val b = a
a = null
println(b)
Run Code Online (Sandbox Code Playgroud)
我预计b的值会变为null,但事实并非如此。与 Java 中分配引用不同,这里a被复制到b。我们如何在 Scala 中分配引用而不是仅仅复制值?
在 Scala 中你无法做到这一点。顺便说一句,它的工作方式与 Java 中的工作方式完全相同:
public class Test {
public static void main(String... args) {
StringBuffer a = new StringBuffer("Foo!");
StringBuffer b = a;
a = null;
System.out.println(b);
// Foo!
}
}
Run Code Online (Sandbox Code Playgroud)
还有 Python,我可能会补充一下,查看你的用户名:
a = ['Foo!']
b = a
a = None
b
# >>> ['Foo!']
Run Code Online (Sandbox Code Playgroud)