假设我有以下Gen可以构建名称的各个部分。
genPrefix
genTitle
genFirstName
genMiddleName
genLastName
genSuffix
我想要一种基于用户想要的部分动态组合Gen(使用Gen.zip
)的机制。对于例如用户可能想要的和可能的组合。很少列出如下
我应该为所有可能的组合创建一个新的Gen并根据输入选择它们还是有更好的方法?
修改
我组合1.定义如下
def genFirstAndLastName(locale: Locale = Locale.US): Gen[(String, String)] = {
Gen.zip(genFirstName(locale), genLastName(locale))
}
我希望用户提供NameParts作为Seq[NumPart]
包含在Gen中,如下所示。将NumPart视为总和类型或枚举。
def genName(parts: Seq[NamePart]) = {
// ???
}
NumPart总和类型
sealed abstract class NamePart
object FirstName extends NamePart
object LastName extends NamePart
object Prefix extends NamePart
object Title extends NamePart
object Suffix extends NamePart