【发布时间】:2015-10-28 12:20:32
【问题描述】:
我将根据 2 个边界过滤 int list。为此,我以这种方式使用了List.filter:
let CountFilesInRange ele lowerRang upperRange=
match ele with
| ele when lowerRang< ele< upperRange -> true
| _ ->false
List.filter (CountFilesInRange 0 5000) listOfSizes
在最后一行中,listOfSizes 出现此错误:
Type mismatch expecting bool list but get int list
我该如何解决?
【问题讨论】:
-
lowerRang< ele< upperRange语法无效;试试lowerRang < ele && ele < upperRange。 -
@ildjarn - 看起来它可能是有效的,因为错误在
filter但是它可能被解析为(lowerRang < ele) < upperRange所以upperRange被推断为bool和CountFilesInRange 0 5000有输入bool -> bool。 -
现在还可以,但总是给我一个空列表
-
请注意,所有
match with表达式都是无用的,因为“范围检查”lower < ele && ele < upper已经是一个布尔表达式,您可以简单地返回它
标签: f#