我有以下财产:
import org.scalacheck.Prop.propBoolean
def elementsAreReversed(list: List[Int], reversed: List[Int]): Boolean =
if (list.isEmpty) true else {
val lastIdx = list.size - 1
list.zipWithIndex.forall { case (element, index) =>
element == reversed(lastIdx - index)
}
}
val propReversed = Prop.forAll { list: List[Int] =>
val reversed = list.reverse
if (list.isEmpty)
list == reversed
else {
val hasSameSize = reversed.size == list.size
val hasAllElements = list.forall(reversed.contains)
// It works until I add a label here:
hasSameSize && hasAllElements && elementsAreReversed(list, reversed)
}
如果添加标签就会破坏:
hasSameSize :| " a label which doesn't let the code compile" &&
hasAllElements &&
elementsAreReversed(list, reversed)
编译器给了我以下内容:
错误:(47, 36) Any => org.scalacheck.Prop 没有可用的隐式视图。
val propReversed = Prop.forAll { list: List[Int] =>
错误:(47, 36) forAll 方法没有足够的参数:
(隐式 p:Any => org.scalacheck.Prop,隐式 a1:org.scalacheck.Arbitrary[List[Int]],隐式 s1:org.scalacheck.Shrink[List[Int]],隐式 pp1:List[Int] =>
org.scalacheck.util.Pretty) org.scalacheck.Prop。未指定值参数
p、a1、s1...
val propReversed = Prop.forAll { list: List[Int] =>
我正在使用 ScalaCheck 版本1.13.4