Scala: Int не принимает параметры при рекурсивном вызове

Я получаю странную ошибку компиляции в небольшом упражнении Scala, над которым я работаю.

У меня есть этот метод, который должен продолжать запрашивать пользовательский ввод, пока не будет предоставлен правильный ответ. Увы, я наткнулся на первый случай сопоставления с образцом:

  override def guess(guess: Int):Unit = {
    val guessIndex = binary(array, guess)
    guessIndex match {
      case -1 => {
         val nextAttempt = StdIn.readLine(s"Please be attentive $guess is outside the search range" 
              +" (0 to $upperBound). Try again: \n");
         val a = validateType[Int](nextAttempt)
         guess(a)
      }
    }
  }

IDE подчеркивает guess(a) ошибкой "Int не принимает параметры". Запуск sbt compile из консоли подтверждает эту ошибку:

> compile
[info] Compiling 2 Scala sources to /home/vgorcinschi/Documents/eclipseProjects/Algorithms/Chapter 1 Fundamentals/algorithms1_4_34/target/scala-2.12/classes...
[error] /home/vgorcinschi/Documents/eclipseProjects/Algorithms/Chapter 1 Fundamentals/algorithms1_4_34/src/main/scala/ca/vgorcinschi/algorithms1_4_34/hotandcold/HotAndColdImpl.scala:23: Int does not take parameters
[error]          guess(a)
[error]               ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 0 s, completed 6-May-2017 6:47:58 PM

Существует несколько разных билетов Stackoverflow для одного и того же сообщения об ошибке, но они предназначены для разных сценариев. В моем здесь похоже, что метод, который принимает параметр Int, отклоняется. Если бы вы могли, пожалуйста, дайте мне подсказку, это бы мне очень помогло.


person vasigorc    schedule 06.05.2017    source источник
comment
Переименуйте параметр guess (или имя метода, так что это что-то другое) — параметр является первым guess в области видимости, поэтому компилятор думает, что вы пытаетесь вызвать его как функцию.   -  person Eric    schedule 07.05.2017
comment
Что ж, это было неловко :-) Вы хотите переместить свой комментарий в ответ, чтобы я мог отметить его как правильный?   -  person vasigorc    schedule 07.05.2017


Ответы (1)


Переименуйте параметр guess (или имя метода, так что это что-то другое) — параметр является первым guess в области видимости, поэтому компилятор думает, что вы пытаетесь вызвать его как функцию.

person Eric    schedule 07.05.2017