6

在 F# 中,给定

type MyType = A | B | C | D | E | F | G

如何随机定义 MyType 的实例?

4

2 回答 2

11

这应该有效:

let randInst<'t>() = 
  let cases = Reflection.FSharpType.GetUnionCases(typeof<'t>)
  let index = System.Random().Next(cases.Length)
  let case = cases.[index]
  Reflection.FSharpValue.MakeUnion(case, [||]) :?> 't

这段代码假定联合情况都是空的,并且您使用的类型实际上是联合类型,但是如果需要,可以很容易地显式检查这些假设并抛出有意义的异常。

于 2009-12-06T16:03:07.563 回答
6

选择一个随机数,然后将该数字与返回不同瞬间的不同分支进行模式匹配?

于 2009-12-06T11:46:34.400 回答