F#中List.filter筛选不等于4的正确写法是什么?
正确筛选F#列表中非4元素的写法
嗨,我来帮你搞定这个F#的小问题~你之前尝试的!=和x not 4都不符合F#的语法规则,F#里判断不等于有两种常用的正确方式:
- 使用
<>运算符(这是F#里标准的不等于运算符)
let x = [1 .. 5] |> List.filter(fun x -> x <> 4)
- 用
not函数包裹等于判断(not是布尔值取反函数,需要传入完整的布尔表达式)
let x = [1 .. 5] |> List.filter(fun x -> not (x = 4))
运行任意一种写法,都会得到排除了4的列表结果:[1; 2; 3; 5]。
顺便给你解释下为什么之前的写法行不通:
- F#里没有
!=这个运算符,它用<>来表示不等于,和C#这类用!=的语言区分开了 not是一个函数,不能直接放在变量和值中间,必须传入一个完整的布尔表达式,所以得写成not (x = 4)而不是x not 4
内容的提问来源于stack exchange,提问作者Tungamirai Mangombe




