如何在 Scala 中分配引用而不是值?

pyt*_*nic 4 java scala

以下面的代码为例,

var a = new StringBuffer("Foo!")
val b = a
a = null
println(b)
Run Code Online (Sandbox Code Playgroud)

我预计b的值会变为null,但事实并非如此。与 Java 中分配引用不同,这里a被复制到b。我们如何在 Scala 中分配引用而不是仅仅复制值?

Jör*_*tag 5

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