Scala:获取特定类型可能具有的所有可能值

时间:2016-03-28 19:15:42

标签: scala

给定类型T是否可以创建类型包含的所有可能值的列表(如果它是有界的)?例如,如果TBoolean,则列表应为Set(True, False)

2 个答案:

答案 0 :(得分:1)

您正在寻找类似于Haskell ng-options="z as z for z in f.qOptions" 类型类的东西吗?你可以在scalaz中找到它

Bounded

您可以找到EnumBoundedApplicative的参考文献。享受。

请注意,为所有> val bounded = implicitly[Enum[Boolean]] bounded: scalaz.Enum[Boolean] = scalaz.std.AnyValInstances$booleanInstance$@108745fc > (bounded.min |@| bounded.max)(_ |-> _) res1: Option[List[Boolean]] = Some(List(false, true)) 创建列表可能需要一段时间......

答案 1 :(得分:0)

并非所有类型都已关闭。例如,Boolean的所有可能值都为Set(True, False),但Double的答案是什么?

听起来你正在寻找定义代数类型。在Scala中,执行此操作的惯用方法是使用sealed trait和case类和对象。有关详细信息,请参阅this question