gpt4 book ai didi

opa:遍历stringmap并基于它形成一个新的字符串

转载 作者:行者123 更新时间:2023-12-04 18:21:47 40 4
gpt4 key购买 nike

我正在编辑 Hello-wiki来自 Opa 文档的代码。我想要一个 wiki-topic 有一个数据库中现有主题的列表。我有一个在默认主题上调用的函数:

/**
* Collect all created topics from /wiki
* and present them in Markdown format
*/
function collect_topics(page) {
string collection = "#Available topics\n"

// Format as a list
Set.iter(function( topic ) {
collection = "{collection} *[{topic}](./{topic})\n"
}, [/wiki])

save_source(page, collection)
}

...
function start(url) {

match (url) {

case {path: [] ... } :
{ collect_topics("Topics") };

case {~path ... } :
{ display(String.capitalize(String.to_lower(String.concat("::", path)))) };
}
}

这引发了一个语法错误:“找到一个绑定(bind)作为条件”,据我了解,因为字符串是不可变的。有没有办法更改创建的字符串?例如:
string x = "foo"
x = x ^ x

如果这是不可能的,那么更好的方法是什么?

最佳答案

事实上,Opa 是一种函数式编程语言,值是不可变的。如果你真的想要一个可变值,使用 http://doc.opalang.org/module/stdlib.core/Mutable或 Cells 来处理您的应用程序上的状态(带有安全更新)http://doc.opalang.org/value/stdlib.core.rpc.core/Cell/make

以下是您应该如何编写代码:

function collect_topics(page) {

collection =
Map.fold(function( key, value, acc ) {
"{acc}\n *[{key}](./{value})"
}, /wiki, "#Available topics\n")

collection
}

这里我使用 Set.fold 而不是 Set.iter。 List.fold 文档应该可以帮助您理解“折叠”函数的工作原理: http://doc.opalang.org/value/stdlib.core/List/fold

Set.iter 不返回任何内容(void),它仅用于遍历集合并执行一些副作用,例如在控制台中打印日志、修改 Dom 等

关于opa:遍历stringmap并基于它形成一个新的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10511445/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com