3

これが ScalaTest 2.0.M5b でコンパイルされないのはなぜですか?

import org.scalatest.matchers.MatchResult
import org.scalatest.matchers.BeMatcher
import org.scalatest.matchers.ShouldMatchers._

def sorted[T <% Ordered[T]] = new BeMatcher[Seq[T]] {
  override def apply(s: Seq[T]) =
    MatchResult(
        s match {
          case Seq(h, t@_*) => s.zip(t).forall{ case (x,y) => x < y }
          case _ => true
        },
        s + " was not sorted",
        s + " was sorted")
}

val s = Seq(1, 2, 3)
s should be (sorted[Int])

これは私が得るエラーです:

overloaded method value should with alternatives: (beWord: NewCollectionsSpec.this.BeWord)NewCollectionsSpec.this.ResultOfBeWordForAnyRef[scala.collection.GenSeq[Int]] <and> (notWord: 
 NewCollectionsSpec.this.NotWord)NewCollectionsSpec.this.ResultOfNotWordForAnyRef[scala.collection.GenSeq[Int]] <and> (haveWord: 
 NewCollectionsSpec.this.HaveWord)NewCollectionsSpec.this.ResultOfHaveWordForSeq[Int] <and> (rightMatcher: org.scalatest.matchers.Matcher[scala.collection.GenSeq[Int]])Unit cannot be applied to 
 (org.scalatest.matchers.Matcher[Seq[Int]])
4

2 に答える 2

11

Scaltest はすでにそのようなマッチャーを提供しています。

seq shouldBe sorted

似たようなコードであることに注意してください。

seq should be sorted

コンパイルしません。

于 2016-02-21T19:09:14.717 に答える