2016-03-14 76 views
-1
class Node(var name:String = "") { 
    this.name : String = name 
} 

x = Node() 
y = x 

x.name = "Error" 

if (x eq y) println(true) else println(false) 

我在scala中有上面的代码,我不认为我理解对象是如何工作的。以上打印出错误。两个变量应该相等,但不是。另外如果我尝试y.name是空的。它不应该和x一样吗? 如果我想让他们修改同一个对象,我该如何使用?scala中的对象

+0

对象没有构造函数的参数。你确定你正在使用'object'而不是'class'吗? –

+0

对不起,我修复了我的帖子。有一个类,从那里我创建了一个新的对象 – user1663930

+0

如何设置名称?这似乎是一个循环参考。你能提供完整的'Node'代码吗? – wheaties

回答

2

我不知道你是如何定义和使用你的代码,但在REPL一个简单的例子产生正确的结果:在斯卡拉

scala> :paste 
// Entering paste mode (ctrl-D to finish) 

class Node(var name: String) { } 

// Exiting paste mode, now interpreting. 

defined class Node 

scala> val node = new Node("hello") 
node: Node = [email protected] 

scala> val otherNode = node 
otherNode: Node = [email protected] 

scala> node.name = "x" 
node.name: String = x 

scala> node eq otherNode 
res0: Boolean = true 

scala> otherNode.name 
res1: String = x 
+0

它不在我的程序 – user1663930

+1

@ user1663930然后发布你的问题[MCVE]。 –