在F#中,给出
type MyType = A | B | C | D | E | F | G
如何随机定义MyType实例?
答案 0 :(得分:9)
这应该有效:
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
此代码假定union情况都是无效的,并且您使用的类型实际上是一个联合类型,但如果需要,可以很容易地明确检查这些假设并抛出有意义的异常。
答案 1 :(得分:5)
选择一个随机数,然后模式匹配那个不同分支返回不同时刻的数字?