当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《与元组规则匹配的F#模式永远不会匹配》经验,为你挑选了1个好方法。

首先,我是f#的新手,所以也许答案很明显,但我没有看到它.所以我有一些带有id和值的元组.我知道我正在寻找的id,我想从我传入的三个中选择正确的元组.我打算用两个匹配语句做一个,一个嵌套在另一个中,但是每个东西都匹配第一条规则.在这个例子中,我把它切成两个元组,因为这显示了我的问题.编译器给出了"规则永远不会匹配"的警告,但我不明白为什么.

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

任何有关更好的方法的帮助或建议将不胜感激.



1> scrwtp..:

使用when条款:

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

这里发生的事情是,当你tupleId作为匹配大小写的一部分使用时,你会引入一个新的值tupleId,你可以参考匹配大小写的右侧.这会影响你的函数参数.

因为你实际上只给元组的第一个元素命名,所以任何元组都会与第一个元素匹配,这就是你在第二个案例中得到"规则不匹配"警告的方式.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有