List OCaml如何操作元组?
假设我有一个元组:List OCaml如何操作元组?,list,ocaml,tuples,List,Ocaml,Tuples,假设我有一个元组: let x = (1,3) 我只想在元组的第一个值上加1。我该怎么做?您可以使用模式匹配来解构元组,然后构建更新后的元组: let (x1, x2) = x in (x1 + 1, x2) 模式匹配是一个典型的习语。另一种方法是使用fst和snd: # let x = (1,3);; val x : int * int = (1, 3) # let y = (fst x + 1, snd x);; val y : int * int = (2, 3) 正如Andreas
let x = (1,3)
我只想在元组的第一个值上加1。我该怎么做?您可以使用模式匹配来解构元组,然后构建更新后的元组:
let (x1, x2) = x in (x1 + 1, x2)
模式匹配是一个典型的习语。另一种方法是使用
fst
和snd
:
# let x = (1,3);;
val x : int * int = (1, 3)
# let y = (fst x + 1, snd x);;
val y : int * int = (2, 3)
正如Andreas Rossberg的回答所指出的,您只能构建一个新的对,因为对的类型已经定义为不可变。如果您真的想更新一个将被更改的值的第二个组件,那么您必须为这些可变对定义一个类型,并将第一个组件指定为可变的,例如使用
type('a,'b)pair={mutable a:'a;b:'b}
。然后你可以做让x={a=1;b=3}
和x.a