Я знаю, что это обсуждалось на SO в других сообщениях раньше, и я понимаю основную разницу между использованием def
и val
. def
используется для определения метода и val
для неизменяемой ссылки. То, что я пытаюсь выполнить, задавая этот вопрос, заключается в том, чтобы понять, есть ли что-то большее для def
. Может ли он использоваться взаимозаменяемо с val
?
Недавно я попробовал следующий код и не могу убедить себя, достаточно ли моего нынешнего понимания def
:
scala> def i: Int = 3
i: Int
scala> i
res2: Int = 3
Итак, мне интересно, это эквивалентно val i = 3
?
Затем я попробовал это:
scala> i()
<console>:9: error: Int does not take parameters
i()
Я сделал это, чтобы проверить свое понимание семантики def
. Теперь я хочу знать, когда i
является методом, почему Scala жалуется на "... не принимает параметры"?
Далее я попробовал следующее:
scala> def i(): Int = 3
i: ()Int
scala> i()
res4: Int = 3
На этот раз Scala, похоже, согласен, что i
является методом. Могу ли я использовать def
вместо val
взаимозаменяемого для объявления и инициализации переменной?