我是 F# 新手,还没有在任何地方见过如何正确执行以下操作
let fun1 a b =
match a b with
| a + b > 0 -> fun2
| a + b < 0 -> fun3
我必须通过模式匹配来完成此任务(作为家庭作业),但我不知道如何正确执行。我想我可以按如下方式使用元组:
let fun1 (a,b) =
match (a,b) with
| (a,b) when a + b > 0 -> fun2
| (a,b) when a + b < 0 -> fun3
但这也不起作用。我该如何继续?
最佳答案
您的想法是正确的,您只是忘记了缩进在 F# 中很重要。添加空格使您的解决方案有效:
let fun1 (a,b) =
match (a,b) with
| (a,b) when a + b > 0 -> fun2
| (a,b) when a + b < 0 -> fun3
这实际上模式匹配两次,所以我们可能想重写它:
let fun1 t = function
| (a,b) when a + b > 0 -> fun2
| (a,b) when a + b < 0 -> fun3
编译器/解释器会让这个过程通过,但会发出警告:
warning FS0025: Incomplete pattern matches on this expression.
我会把摆脱它作为练习:-)
PS。你很高兴能坦率地说这是家庭作业。关于f# - 模式匹配多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22380131/