filter - 表达式类型错误
问题描述
这个问题与这个SE question密切相关。MyMap
已以StringMap
与该问题相同的方式创建。
# lsc;;
- : (MyMap.key * testtype) list =
[(("", "Test1"),
{name = ""; state = ""; region = "Test1a"});
(("", "Test1a"),
{name = ""; state = ""; region = "Test1b"});
(("", "Test2"),
{name = ""; state = ""; region = "Test2"})]
我想创建一个函数,它会给我一个过滤列表lsc
。我想根据(x, _) _
. 例如等于Test1
,则函数将返回记录列表
[{name = ""; state = ""; region = "Test1a"}; {name = ""; state = ""; region = "Test1b"}]
目前,我只想过滤lsc
得到
[(("", "Test1"),
{name = ""; state = ""; region = "Test1a"});
(("", "Test1a"),
{name = ""; state = ""; region = "Test1b"})]
MyMap.filter (fun (x,_) _ -> x="Test1") lsc;;
给我以下错误:
Error: This expression has type (MyMap.key * testtype) list
but an expression was expected of type
'a MyMap.t = 'a Map.Make(PaireCles).t
从SE question开始,我认为这是要走的路,但我总是面临同样的错误。有解决方法吗?
解决方案
Map.filter函数接受一个函数和一个地图数据结构,而不是您拥有的关联列表。您可以使用List.filter过滤键*值对列表,
List.filter (fun (x,_) -> x = "Test1") lsc
推荐阅读
- javascript - React Router - 具有多个重定向组件的意外重定向行为
- android - Flutter:本地通知插件显示两次通知
- python - 读取文件时表不加载数据显示空表
- python - 如何使用networkx找到特定节点集之间的最短路径
- dataweave - 简单的用法奇迹,我可以让光标在自动完成点符号后停止自动选择空白的单个空格吗?
- c++ - 为什么我在 O(logn) 中使用二进制搜索方法计算平方根的代码给出浮点异常
- sql - Oracle 将 INSERT 转换为 MERGE ot not EXISTS
- core-data - 向 iCloud 生产发布新的 Core Data Schema
- r - {tidyr} 中的提取功能有问题
- php - 如何从数据库MYSQL中选择除某些列之外的所有列?