2017-05-06 11 views
0

私が取り組んでいるScalaの小さな練習では、奇妙なコンパイルエラーが発生します。Scala:Intは再帰呼び出しでパラメータを取らない

私は、正しい答えが提供されるまでユーザーの入力を求め続けることになっているこの方法を持っています。ああ、私は私のパターンマッチングで最初のケースでつまずいています:

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は「INTはパラメータを取りません」エラーでguess(a)を強調しています。コンソールから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パラメータを拒否する方法のように見えます。もしあなたが私にヒントを与えてくれれば、これは私に多くの助けになるだろう。

+3

'guess'パラメータ(またはメソッド名なので、別のものです)の名前を変更します - パラメータはスコープ内の最初の'推測 'です。したがって、コンパイラはそれを関数として呼び出そうとしています。 – Eric

+0

まあ、それは恥ずかしかったです:-)私は正しいとマークすることができるようにあなたのコメントを答えに移動したいですか? – vasigorc

答えて

3

guessパラメータの名前を変更してください(つまり、メソッド名が異なるため) - パラメータはスコープ内の最初のguessであるため、コンパイラはそれを関数として呼び出そうとしています。

関連する問題