与元组规则匹配的F#模式将永远不会匹配

杰西

首先,我是f#的新手,所以答案也许很明显,但我没有看到。因此,我有一些带有ID和值的元组。我知道我要查找的id,我想从传入的三个元组中选择正确的元组。我打算用两个匹配的语句(一个嵌套在另一个中)进行匹配,但是每件事都与之匹配第一条规则。在此示例中,我将其缩减为两个元组,因为这显示了我的问题。编译器发出“规则永远不会匹配”警告,但我不明白为什么。

let selectTuple tupleId tuple1 tuple2 = 
    match tuple1 with
    | (tupleId, _) -> tuple1
    | _ -> tuple2

任何更好的方法的帮助或建议,将不胜感激。

r

使用when子句:

let selectTuple tupleId tuple1 tuple2 = 
    match tuple1 with
    | (x, _) when x = tupleId -> tuple1
    | _ -> tuple2

这里发生的是,当您tupleId用作区分大小写的一部分时,会引入一个新的值,称为tupleId您可以在区分大小写的右侧引用该这掩盖了您的函数参数。

由于您实际上只是给元组的第一个元素命名,因此任何元组都将匹配第一种情况,这就是在第二种情况下得到“规则不匹配”警告的方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章