分配變量一旦這就是我想做的事 -斯卡拉:無VAL
class A(some args) {
var v: SomeType = null
def method1(args) = {
v = something1
...
method3
}
def method2(args) = {
v = something2
...
method3
}
def method3 = {
// uses v
}
}
在這種特定的情況下,方法1和2是互斥的,它們中的一個在一個生命週期調用一次A.的實例。另外,v被賦值一次。我寧願讓它成爲一個val。但是因爲我需要method2或method3的上下文來初始化v,所以我不能在構造函數中這樣做。
如何實現這種「val」行爲?我可以考慮修改method1和method2來應用方法,但我不喜歡這個想法。此外,方法1和方法2具有相同的參數簽名(因此應用程序需要一些更多的信息來區分兩種類型的調用)。
爲什麼'v'值不能作爲參數傳遞給'm3'? 'm3'是從'class'之外調用的嗎?如果是這樣,可以在'm1'或'm2'之前調用'm3'嗎? (這聽起來像是一個設計缺陷。) – jwvh
對我來說聽起來像你只需要強制執行'method1'或'method2'只能調用一次,'method3'只能在事後調用。 –
@jwvh m3是一個私有方法,應該在我的代碼片段中提到。 – anindyaju99