2016-06-13 1 views

답변

1

the Gen object을 보면 alphaCharidentifier을 비롯한 몇 가지 발전기를 볼 수 있습니다.

scala> import org.scalacheck.Gen._ 
import org.scalacheck.Gen._ 

scala> identifier.sample 
res0: Option[String] = Some(vxlgvihQeknhe4PolpsJas1s0gx3dmci7z9i2pkYlxhO2vdrkqpspcaUmzrxnnb) 

scala> alphaChar.sample 
res1: Option[Char] = Some(f) 

scala> listOf(alphaChar).sample 
res2: Option[List[Char]] = Some(List(g, n, x, Y, h, a, c, e, a, j, B, d, m, a, r, r, Z, a, z, G, e, i, i, v, n, Z, x, z, t)) 

scala> listOf(alphaChar).map(_.mkString).sample 
res3: Option[String] = Some(oupwJfqmmqebcsqbtRxzmgnJvdjzskywZiwsqnkzXttLqydbaahsfrjqdyyHhdaNpinvnxinhxhjyzvehKmbuejaeozytjyoyvb) 
+0

타크! 정확히 내가 원하는 걸! – ka4eli

1

케이스 클래스 ReadableChar(c: Char)을 추가하고 임의로 인스턴스를 정의하여 그렇게 할 수 있습니다.

case class ReadableChar(c: Char) 
implicit val arbReadable: Arbitrary[ReadableChar] = Arbitrary { 
    val legalChars = Range('a', 'z').map(_.toChar) 
    for { 
    c <- Gen.oneOf(legalChars) 
    } yield ReadableChar(c) 
} 

같은 아마 뭔가 그런 다음, 읽을 수있는 문자의 배열을 생성하는 Arbitrary[Array[ReadableChar]]의 인스턴스를 사용 .map(_.c).toString를 통해 캐릭터 라인으로 바꿀 수 있습니다.

이것은 포함 할 수있는 문자로 "사람이 읽을 수있는 문자열"을 정의하려는 경우에 사용됩니다. 추가 제한이 필요한 경우 두 번째 사례 클래스 ReadableString(s: String)을 작성하고 이에 대한 Arbitrary의 인스턴스도 정의 할 수 있습니다.