2016-06-13 5 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

Thak you!まさに私が欲しいもの! – 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) 
} 

のようなもの次に、あなたは.map(_.c).toStringを経由して、文字列にそれを回す、読みやすい文字の配列を生成するArbitrary[Array[ReadableChar]]のインスタンスを使用することができます。

これは、許可されている文字によって「人間が判読可能な文字列」を定義する場合に有効です。追加の制限が必要な場合は、2番目のケースクラスReadableString(s: String)を作成し、Arbitraryのインスタンスも定義できます。

関連する問題