首先,我是f#的新手,所以答案也许很明显,但我没有看到。因此,我有一些带有ID和值的元组。我知道我要查找的id,我想从传入的三个元组中选择正确的元组。我打算用两个匹配的语句(一个嵌套在另一个中)进行匹配,但是每件事都与之匹配第一条规则。在此示例中,我将其缩减为两个元组,因为这显示了我的问题。编译器发出“规则永远不会匹配”警告,但我不明白为什么。
let selectTuple tupleId tuple1 tuple2 =
match tuple1 with
| (tupleId, _) -> tuple1
| _ -> tuple2
任何更好的方法的帮助或建议,将不胜感激。
使用when
子句:
let selectTuple tupleId tuple1 tuple2 =
match tuple1 with
| (x, _) when x = tupleId -> tuple1
| _ -> tuple2
这里发生的是,当您tupleId
用作区分大小写的一部分时,会引入一个新的值,称为tupleId
您可以在区分大小写的右侧引用该值。这掩盖了您的函数参数。
由于您实际上只是给元组的第一个元素命名,因此任何元组都将匹配第一种情况,这就是在第二种情况下得到“规则不匹配”警告的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句