Почему мое переназначение значения функции не удается в Scala? - PullRequest
2 голосов
/ 18 сентября 2011

В следующем коде я пытаюсь создать значение функции, которое не принимает параметров и печатает сообщение

trait Base {
  var onTrade = () => println("nothing")

  def run {
    onTrade
  }
}

В следующем подклассе я пытаюсь переназначить значение функции для печати другого сообщения

class BaseImpl extends Base {
  onTrade = () => {
    val price = 5
    println("trade price: " + price)
  }
  run
}

Когда я запускаю BaseImpl, в консоль вообще ничего не выводится. Я ожидаю

trade price: 5

Почему мой код не работает?

1 Ответ

8 голосов
/ 18 сентября 2011

onTrade - это функция, поэтому для ее вызова необходимо использовать скобки:

def run {
   onTrade()
}

Обновление

Метод run скорее всего вас смущает -Вы можете назвать это даже без скобок.есть различие между методом и функцией.Вы можете посмотреть на этот вопрос SO, он может быть полезен:

Какое правило для скобок при вызове метода Scala?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...