我正在尝试在 opa 中实现回调,因此当变量在服务器端更新时,客户端会立即获得更新后的值。
我知道我可以通过网络做到这一点:
Network.add_callback(update_function, room)
但是,作为一项学习练习,我想自己实现该功能。
我的第一个想法是创建一个void->void
函数列表list(void->void)
,这是我遇到的第一个问题,即缺少可变状态和变量。所以我不能将任何回调函数添加到创建的列表中。
这引出了我的第一个问题:我如何在没有可变状态的情况下工作?我不认为自己是函数式编程的新手,但通常我只会重新分配一个变量
IE
x = ['a','b','c']
function addVal(val){
x = List.add(val,x)
}
但这在 opa 中似乎不合法。
没有变量或可变数据结构怎么可能工作?我看不出没有可变状态如何实现任何动态内容。
我决定尝试通过将回调函数列表存储在数据库中来解决这个问题:
database callbacks{
list(void -> void) functions
}
但我得到了错误
Elements of type void -> void cannot be stored in the database
这引出了我的第二个问题:
有没有比 doc.opalang.org 更好的 opa 资源?我无法找到有关数据库中允许的类型的任何信息。
总而言之:
- 如何在不使用可变状态或变量的情况下构建一个实际执行任何操作的程序?
- opa 数据库中允许哪些类型?
- 除了 doc.opalang.org 之外,还有其他有用的 opa 资源吗?