我有一个我创建的数据类型(SlcCustomer)列表:
[SlcCustomer {slcCustName = "Xena Gamble", slcCustID = 1, slcCustAge = 27},SlcCustomer {slcCustName = "Brooke Castaneda", slcCustID = 2, slcCustAge = 80}]
我在结果上使用PRINT函数得到了这个输出。
现在我需要FILTER这个,我想删除任何有slcCustAge< = 20的行...有没有办法使用内置的过滤器类型的东西并以某种方式检查它?
答案 0 :(得分:6)
一种简单的方法是使用列表推导:
let sourcelist = [SlcCustomer {slcCustName = "Xena Gamble", slcCustID = 1, slcCustAge = 27},SlcCustomer {slcCustName = "Brooke Castaneda", slcCustID = 2, slcCustAge = 80}]
let resultlist = [x | x <- sourcelist, slcCustAge x <= 20]
这将根据需要过滤列表,并在逗号后面指定过滤条件。
或者,您可以使用filter
执行相同的操作:
let resultlist = filter (\x -> slcCustAge x <= 20) sourcelist
您可以从功能中返回resultlist
,或根据您的需要进行打印。