Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opa 如何迭代stringmap中的键?_Opa - Fatal编程技术网

Opa 如何迭代stringmap中的键?

Opa 如何迭代stringmap中的键?,opa,Opa,我真正想做的是迭代stringmap的键。我正在使用新的语法。我找不到关于StringMap.iter()的任何信息,所以我使用了在某个地方为List.iter()找到的语法。我认为原始代码实际上并没有对键进行迭代,现在如果我能让它工作的话,我会满足于对值进行迭代 我的代码如下: 我得到以下错误: Error File "test.opa", line 23, characters 1-64, (23:1-23:64 | 472-535) Function was found of type

我真正想做的是迭代stringmap的键。我正在使用新的语法。我找不到关于StringMap.iter()的任何信息,所以我使用了在某个地方为List.iter()找到的语法。我认为原始代码实际上并没有对键进行迭代,现在如果我能让它工作的话,我会满足于对值进行迭代

我的代码如下:

我得到以下错误:

Error
File "test.opa", line 23, characters 1-64, (23:1-23:64 | 472-535)
Function was found of type
(string, 'a -> void), ordered_map(string, 'a, String.order) -> void but
application expects it to be of type
(string -> xhtml), stringmap(item) -> 'b.
Types string, 'a -> void and string -> xhtml are not compatible
Hint:
  Function types have different arguments arity (2 versus 1).

我尝试了其他几种方法,但它们似乎使用了旧语法,没有与编译器配合。我真的不明白伏都教告诉我的错误是什么,所以问题是,如何使用StringMap.iter()?或者以其他方式迭代StringMap中的键?

函数类型具有不同的参数arity(2对1)
表示您尝试使用具有1个参数的函数,而预期使用具有2个参数的函数。您只能通过
在列表上迭代,但可以通过
在地图上迭代

然后,
List.iter
StringMap.iter
就意味着不会产生副作用(比如登录控制台)。它们不返回任何值。这可能不是您希望在代码中执行的操作

您应该改用StringMap.fold:

// item is a record of type {string description, string url}
function render_item(item) {
<>
  <li>
    <h4>item</h4>
    <a href="{item.url}">{item.description}</a>
  </li>
</>
}

function render_index() {
    function f(key, item, acc){
        [render_item(item) | acc]
    }
    <ul>
      { StringMap.fold(f, /mydb/items, []) }
    </ul>
}
//项是类型为{string description,string url}的记录
函数渲染_项(项){
  • 项目
  • } 函数render_index(){ 功能f(关键、项目、附件){ [呈现项目(项目)|附件] }
      {StringMap.fold(f,/mydb/items,[])}
    }
    成功了,谢谢!只是想知道这个“[render_item(item)| acc]”是关于什么的?这是否以某种方式累积了产出?acc到底是什么?acc是一个列表类型的累加器,一个xhtml列表<代码>[e|acc]在列表的开头添加
    e
    acc