2017-03-17 15 views
1

私は私がしようとする第二のファイルが http://www.filedropper.com/listssuite_1Scalaの型が一致し、見つかった:ブールが必要:リスト[int]は

からダウンロードすることができます

package example 
object Lists { 
    def sum(xs: List[Int]): Int = { 

     xs match { 
     case x :: tail => x + sum(tail) 
     case Nil => 0 
    } 
    } 
    def max(xs: List[Int]): Int = { 
     xs match { 
     case Nil => throw new java.util.NoSuchElementException() 
     case List(x) => x 
     case x :: y :: rest => max ((if (x > y) x else y) :: rest) 
    } 
    } 

    } 

簡単な例で私のSBTのテストを解決しようとしていますこれはhappens.Howそれはコンパイラがブールとして私のタイプを見つけたことを来る理由SBT

[error] /home/milenko/dom1/example/src/test/scala/example/ListsSuite.scala:122: type mismatch; 
[error] found : Boolean 
[error] required: List[Int] 
[error]  assert(sum(List() === 0)) 
[error]      ^
[error] /home/milenko/dom1/example/src/test/scala/example/ListsSuite.scala:134: type mismatch; 
[error] found : Boolean 
[error] required: List[Int] 
[error]  assert(max(List(1, -4, 2, 6) === 6)) 
[error]         ^
[error] two errors found 
[error] (test:compileIncremental) Compilation failed 
[error] Total time: 1 s, completed 17/03/2017 10:43:00 

での試験は、私は理解していませんか?

答えて

5

のために行く: assert(sum(List()) === 0)代わり:和のパラメータの型がブール(List() === 0

てみがある

assert(sum(List() === 0)) 

ので。

同じ機能がmaxになります。

3

List() === 0は、true(空のリストがゼロの数に等しい場合)またはfalseのいずれかになる可能性があるため、ブール型の式です。または、より正確には、空のリストが決して0に等しくないので、これは偽になることがあります。次に、そのブール値の合計を計算しようとします。これは型エラーです。

同じ

はこれが故障しているライン134

関連する問題