在 F# 中,给定
type MyType = A | B | C | D | E | F | G
如何随机定义 MyType 的实例?
这应该有效:
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
这段代码假定联合情况都是空的,并且您使用的类型实际上是联合类型,但是如果需要,可以很容易地显式检查这些假设并抛出有意义的异常。
选择一个随机数,然后将该数字与返回不同瞬间的不同分支进行模式匹配?