考虑下面的对象,斯卡拉创建VAL为外部范围
object A {
def setX(x:Int) = {
val x1 = x
}
def getx() = x1
}
如果我创建内部setX的VAL X1是的范围将是法setX的。我真正想要做的是在方法外创建一个val,并在方法内分配值。没有使用var是不可能的,或者有什么办法可以做到吗?
请给我一个例子,如果你可以。
考虑下面的对象,斯卡拉创建VAL为外部范围
object A {
def setX(x:Int) = {
val x1 = x
}
def getx() = x1
}
如果我创建内部setX的VAL X1是的范围将是法setX的。我真正想要做的是在方法外创建一个val,并在方法内分配值。没有使用var是不可能的,或者有什么办法可以做到吗?
请给我一个例子,如果你可以。
这就是val
(“只读”)和var
之间的区别。
所以不:不可能。
如果问题(不是所需的解决方案)得到更多解释,可能会有其他方法。
快乐编码。
它很难说,你真正想要什么来实现的,但往往将您的setX
方法的伎俩:
def setX(x:Int) = {
x
}
val x1 = setX(x)
,或者你可以创建一个SetOnce
类,它包含一个值和允许精确设置一次...
如果getx()在setX()之前被调用,你希望发生什么?有很多方法可以做我认为你正在尝试做的事,但你的例子基本上是要求在没有可变状态的情况下可变状态。 – brandon
当你调用'setX'两次会发生什么? 'val' *改变*?坏。它应该被忽略吗?也不好。它应该导致错误?可能是最好的,但仍然不好。 – Landei
其实,这是一个scalaquery项目,我不想在这个例子中放置一个凌乱的scalaquery代码,这个方法是设置数据库,我可以保证,setX在运行时调用一次。不管怎样,谢谢你。 – tiran