Случайным образом выберите экземпляр из объединения в F#

Просто используйте :e# сопровождаемый , Входят - который в основном говорит для редактирования последнего (нового) файла.

5
задан pavium 6 December 2009 в 11:42
поделиться

2 ответа

Select a random number, then pattern match that number with different branches returning a different instant?

5
ответ дан 18 December 2019 в 13:15
поделиться

Это должно сработать:

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

В этом коде предполагается, что все случаи объединения являются нулевыми и что используемый вами тип на самом деле является типом объединения, но это будет легко проверить явно эти предположения и при желании выдавать значимые исключения.

9
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: