试图理解 F# 中的元组..
目前的思考过程
let add tuples a b = 
let a = (_,_)
let b= (_,_)
(a+b)
Run Code Online (Sandbox Code Playgroud)
由于“_”对这种情况无效,这将不起作用,所以我想尝试
let add tuples a b =
let a = (c,d)
let b = (e,f)
fst a + fst b, snd a + snd b;;
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为 c,d,e,&f 不是已知变量。在 Java 中,我传统上只会初始化该变量,以便可以使用它,但在 F# 中,这似乎有点时髦,let a= int 甚至不确定这是否可行
任何试图解决我的思维过程的帮助将不胜感激。谢谢
编辑:
预期结果
a (1,3) b (2,4) 返回 (3,7)
从元组访问元素有两种方法,您的代码似乎混淆了它们。首先,您可以在二元素元组上使用fst和snd。你实际上有这个权利,但你需要删除其他不必要的行 -a并且b是元组,所以你可以只写:
let add a b =
  fst a + fst b, snd a + snd b
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用模式匹配。为此,您需要分配一个元组值,即a或b定义新变量的模式,如(c, d). 使用模式匹配执行上述操作如下所示:
let add a b =
  let (a1, a2) = a
  let (b1, b2) = b
  a1 + b1, a2 + b2
Run Code Online (Sandbox Code Playgroud)
模式可以let像上面一样出现在独立绑定中,但您也可以直接在函数的参数中使用它们 - 因此您可以将其缩短为:
let add (a1, a2) (b1, b2) = 
  a1 + b1, a2 + b2
Run Code Online (Sandbox Code Playgroud)