如何避免使用可变数据结构并使用更多功能方法?

时间:2015-09-04 19:31:33

标签: functional-programming scheme

我正在构建一个使用有线键/值存储的数据库。

要查询给定的表,需要在表上有cursor。图书馆建议重新使用with db.cursor() as cursor: cursor.get(key) ... do_something(db) ... 。一般行为可以通过以下伪代码来描述:

with

cursor语句do_something(db) 的范围内,只能在当前上下文中使用。如果cursor需要游标,它必须创建/检索另一个游标,即使它是查询同一个表。否则do_something(db)会松开它的位置而db.cursor()的延续并不期望。

您可以通过始终重置光标来解决这个问题,这是一种浪费。相反,最好保留一组准备好使用的游标,当一个游标可以通过list 请求时,这将从可用游标中删除游标并将其返回。完成“上下文”操作后,将其放回原位。

我在Python中解决这个问题的方法是使用db.cursor()def cursor(self): cursor = self.cursors.pop() yield cursor self.cursors.append(cursor) 看起来像:

pip install pygame

这意味着,检索游标,将其发送到当前上下文,上下文完成后,将其放回可用游标列表。

如何避免突变并使用更多功能性方法?

1 个答案:

答案 0 :(得分:2)

也许你想要参数?

查找Scheme实现使用的确切构造。

某些实现使用:

http://srfi.schemers.org/srfi-39/srfi-39.html