gpt4 book ai didi

f# - 在 F# 中添加两个元组

转载 作者:行者123 更新时间:2023-12-05 08:49:32 26 4
gpt4 key购买 nike

试图理解 F# 中的元组..

当前的思考过程

let add tuples a b = 
let a = (_,_)
let b= (_,_)
(a+b)

这行不通,因为“_”在这种情况下无效,所以我想试试

let add tuples a b =
let a = (c,d)
let b = (e,f)
fst a + fst b, snd a + snd b;;

这行不通,因为 c、d、e 和 f 不是已知变量。在 Java 中,我传统上只是初始化该变量以便可以使用它,但在 F# 中这似乎有点古怪 let a= int 甚至不确定这是否会起作用/p>

如果您能帮助我解决我的思维过程,我们将不胜感激。谢谢

编辑:

预期结果

一个(1,3)b (2,4)返回 (3,7)

最佳答案

有两种访问元组元素的方法,您的代码似乎混淆了它们。首先,您可以在双元素元组上使用 fstsnd。你实际上有这个权利,但你需要删除其他不必要的行 - ab 是元组,所以你可以只写:

let add a b =
fst a + fst b, snd a + snd b

另一种选择是使用模式匹配。为此,您需要将元组值(即 ab)分配给定义新变量的模式,例如 (c, d) .使用模式匹配执行上述操作如下所示:

let add a b =
let (a1, a2) = a
let (b1, b2) = b
a1 + b1, a2 + b2

模式可以像上面那样出现在独立的 let 绑定(bind)中,但您也可以直接在函数的参数中使用它们 - 所以您可以将其简化为:

let add (a1, a2) (b1, b2) = 
a1 + b1, a2 + b2

关于f# - 在 F# 中添加两个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63908413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com