如何访问元组的随机成员?

| 我想访问一个元组的随机成员,我不确定如何将“ 0”设置为一个变量。 这是我的代码:
val lis = (\"a\",\"b\",\"c\",\"d\")
val randNumber = Random.randRange (1,4) (Random.rand (0,1)) 
val randChar = #randNumber lis //this is where its failing
成员#2说,这是我通常访问的方式:
val lis = (\"a\",\"b\",\"c\",\"d\")
val ranChar = #2 lis;
所以我的问题是如何在上面的示例中将
#2
设置为变量? 提前非常感谢您!!     
已邀请:
有一些解决方法,例如,您可以显式地匹配
randNumber
并调用适当的成员函数:
    val randChar = case randNumber of
                      1 => #1 lis
                    | 2 => #2 lis
                    | 3 => #3 lis
                    | _ => #4 lis
当然,这不是很好。另一个解决方法是将
lis
的表示形式更改为
List
并使用
List.nth
List.nth(lis, randNumber-1)
希望它能以某种方式对您有所帮助。     
我想你不能。访问运算符的类型是什么? 如果要动态随机访问数据,则应首先将其转换为向量。 PS:有多种语言(Coq,Agda等)可以在其中键入这种访问运算符,但是这需要依赖类型(或者至少是类型级别的整数加上一些魔术,也许Omega也可以做到)。     

要回复问题请先登录注册