过滤我自己类型的列表 - 元组?
如何通过元组中的第三项过滤此类型的列表:
type Car = (String, [String], Int [String])
我看到了 snd 和 fst 方法,但在这里我认为这不起作用,我不确定如何在不使用 '_'
通配符的情况下进行映射。
How can I filter a list of this type by the third item in the tuple:
type Car = (String, [String], Int [String])
I saw the snd
and fst
methods but here i dont think this will work and im not sure how to map without using the '_'
wildcard.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于具有两个以上元素的元组,没有任何预定义函数,例如
fst
或snd
。正如您所说,您可以使用模式匹配和通配符_
来完成这项工作。但是,这通常表明您应该从使用元组更改为使用记录类型。
现在,您可以像使用
fstmodel
、foo
、year
和bar
元组上的 code> 和 snd 。There aren't any pre-defined functions like
fst
orsnd
for tuples with more than two elements. As you said, you can use pattern matching and the wild card_
to do the job.However, this is usually a sign that you should change from using tuples to a record type.
Now, you can use
model
,foo
,year
andbar
like you would usefst
andsnd
on tuples.或者您可以使用
Data.Tuple.Utils
?MissingH
也充满了其他好东西;几乎我所有的项目都在某个地方或其他地方使用它。Or you could just use
Data.Tuple.Utils
?MissingH
is full of other good stuff too; almost all of my projects use it somewhere or other.这是我对类似问题的解决方案:
关键是要理解过滤函数采用谓词,而不是布尔值。
因此,简单地说
filter(getstock < getreorder)
是行不通的,
而
`filter (getstock < 10)
则有效
Here is my solution for a similar problem:
The key was to understand that the filter function takes a predicate, not a boolean value.
So, simply saying
filter(getstock < getreorder)
would not work,
while
`filter (getstock < 10)
would