2017-02-07 5 views
0
class Time(var h: Int, val m: Int) { 
    def before(val other: Time) = { //compile error due to keyword val 
    (this.h < other.h) || (this.m < other.m) 
    } 
} 

Как отметить аргумент другой в методе перед как вар/Валу? Если я удалю val до другой, он скомпилируется успешно.Scala: не удалось отметить аргументы метода класса, как вар/Валу

ответ

5

Вы не можете изменить ссылку на other, поскольку это аргумент функции.

def before(val other: Time) = ... 

будет эквивалентно (если бы это было правовой)

def before(other: Time) = ... 

Если вы хотели var, просто создать его внутри функции:

def before(other: Time) = { 
    var otherVar = other 
    ... 
} 
+0

Вместо «просто эквивалент ", я бы сказал," будет эквивалентным, если это будет законным ". –