【发布时间】:2016-03-24 04:11:41
【问题描述】:
我有这样一行代码:
list |> List.mapi (fun i x -> y, i)
(假设 y 已经定义了类型)
但我想返回带有某些条件的元素(例如过滤它)
我不能这样写:
list |> List.mapi (fun i x -> if 'condition' then y, i)
因为它也需要其他条件,而我没有“其他”情况。 我也没有设法同时使用过滤器,因为我还需要返回正确的索引,如果我过滤列表,索引将被更改。 有什么想法吗?
编辑 到目前为止,我是这样实现的:
list |> List.mapi (fun i a -> if (a = None) then O, i else X, i) |> List.filter (fun (a,i) -> a = O)
对于其他情况,我给出了无用的 X,i,只是为了能够在此之后编写条件并删除 X 。它正在工作,这就是我想要的结果。但我确信有更好的解决方案。
【问题讨论】:
-
你能提供更多的上下文吗?我认为您有一个
xs 中的list有点奇怪,您正在映射但在地图中根本不使用x。我认为,在更多的背景下,可能会有更好的选择。例如,如果您尝试将两个列表之间的元素关联起来,那么使用zip可能比使用索引更好。 -
我需要 x 条件,比如如果 x = "someting"。谢谢,我会检查一下 zip 的作用
-
是
y只是一个固定值还是您想要获取元素i的另一个列表/集合? -
y 只是固定值,所以我没有指定它
-
很难准确地理解你想要做什么。请提供一些示例输入和相应的预期输出。