如何解决如何在 ocaml 中设置一个可以有多个值的变量?
例如我想要变量名,其中变量可以是三个字符串之一:
let name="emma";"mark";"jack";;
我知道这不是正确的方法,但目前我没有更好的主意。我希望以后能够访问这个变量。
解决方法
您正在显示您的变量被设置为同时看起来像 3 个字符串的内容。但从您的描述来看,您似乎想要一个可以在不同时间分配三个不同值之一的变量。
对于第一种情况,@AmbikaE 给出了很好的答案。
如果你想要第二种情况,你可以使用变体类型。字符串类型几乎是开放式的,但您可以使用特定值定义自己的类型:
type name = Emma | Mark | Jack
暂且不谈在 OCaml 中“分配”一个值意味着什么,您可以使用以下三个值之一定义一个变量:
let x = Mark
如果你有(比如说)一个函数接受这种类型的值,它的参数可以在每次调用时代表三个值中的任何一个(但只有一个)。
,假设您想要的实际上是一个数组(因为我不确定“同时存储多个值的变量”可能意味着什么),以下是它们在 OCaml 中如何使用的一些示例:
let names = [| "Emma" ; "Mark" ; "Jack"|] in
print_endline names.(0); (* Prints "Emma" *)
names
|> Array.iter print_endline; (* Prints all the names *)
let name_lengths =
names
|> Array.map String.length in
print_int name_lengths.(0) (* Prints length of the string Emma *)
如果您不需要快速随机访问并且想要更加惯用,请查看 OCaml 中如何使用列表来执行您在命令式语言中传统上使用数组的许多相同操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。