Item类有一个以0开头的实例变量id。我想调用nextID将id从0递增到1;但是,当我执行新的Item()。id + = 1时,存在类型不匹配。那是为什么?
class Item {
private var id: Int = 0
this.id = Item.nextId
}
// companion object
object Item{
def apply() = new Item()
def nextId: Int = {
new Item().id += 1 //type mismatch
}
}
答案 0 :(得分:2)
从哪里开始?
def nextId: Int = {
new Item().id += 1
}
+=
是一项任务。作业没有返回值,但nextId
应该是Int
。我们可以像这样解决它......
def nextId: Int = {
val nitem = new Item()
nitem.id += 1
nitem.id
}
......但还有其他问题。每次有人调用nextId
时,它都会创建一个新的Item
,该项的id
会递增,会返回此id
的更新值,以及新的Item
被扔掉了。这听起来不对。
class Item {
private var id: Int = 0
this.id = Item.nextId
}
嗯,这看起来很可疑。创建Item
后,它会调用nextId
,但nextId
会创建一个新的Item
,它会调用nextId
,这会创建一个新Item
调用....它将在哪里结束?