有没有办法让模式匹配与我的值匹配任何负数?负数是什么并不重要我只需要与任何负数相匹配。
我用这个简单的代码完成了我想要的东西:
let y = if(n < 0) then 0 else n in
match y with
0 -> []
| _ -> [x] @ clone x (n - 1)
但我想删除if
语句,并将其作为match
语句中的另一个案例进行检查
答案 0 :(得分:10)
是的,请使用警卫:
match n with
_ when n < 0 -> []
| _ -> [x] @ clone x (n - 1)
答案 1 :(得分:9)
您可以使代码更加清晰:
match n < 0 with
| true -> []
| false -> [x] @ clone x (n - 1)
更好的是:
if n < 0 then [] else [x] @ clone x (n - 1)
通常,如果语句比简单逻辑测试的匹配更清晰。
在我们处理此问题时,我们也可以使用::
代替@
:
if n < 0 then [] else x :: clone x (n - 1)
答案 2 :(得分:0)
有关键字when。按头(我现在不能测试)
让y =与n匹配 |当n < 0 - &gt; 0 | 0 - &gt; [] | _ - &gt; [x] @ clone x(n - 1)
但是,即使你的例子也不行。一方面,你返回一个int,另一方面返回一个列表。