Functional programming 如何避免使用可变数据结构,并使用更具功能性的方法?
我在scheme中使用wiredtiger键/值存储构建数据库 要查询给定的表,需要在表上有一个Functional programming 如何避免使用可变数据结构,并使用更具功能性的方法?,functional-programming,scheme,Functional Programming,Scheme,我在scheme中使用wiredtiger键/值存储构建数据库 要查询给定的表,需要在表上有一个光标。库建议重新使用光标。一般行为可由以下伪代码描述: with db.cursor() as cursor: cursor.get(key) ... do_something(db) ... 在使用语句的范围内,光标只能在当前上下文中使用。如果do\u something(db)需要一个游标,它必须创建/检索另一个游标,即使它要查询同一个表。否则,光标将失去其位置,d
光标。库建议重新使用光标
。一般行为可由以下伪代码描述:
with db.cursor() as cursor:
cursor.get(key)
...
do_something(db)
...
在使用
语句的范围内,光标
只能在当前上下文中使用。如果do\u something(db)
需要一个游标,它必须创建/检索另一个游标,即使它要查询同一个表。否则,光标
将失去其位置,do_something(db)
的继续操作将不符合预期
您可以通过始终重置光标来解决此问题,这是一种浪费。相反,最好保留一组游标以备使用,当可以通过db.cursor()
请求时,这将从可用游标中删除游标并返回它。“上下文”操作完成后,将其放回原处
我在Python中解决这个问题的方法是使用列表
db.cursor()
看起来像:
def cursor(self):
cursor = self.cursors.pop()
yield cursor
self.cursors.append(cursor)
这意味着,检索游标,将其发送到当前上下文,一旦上下文完成,将其放回可用游标列表
我怎样才能避免变异并使用更实用的方法呢?也许你需要参数 查找方案实现使用的确切构造 一些实现使用:
http://srfi.schemers.org/srfi-39/srfi-39.html
你能更精确一点吗?这里对参数有很好的描述:最后几节将参数与突变进行比较。