gpt4 book ai didi

python - 如何在 C 中实现惰性求值?

转载 作者:IT老高 更新时间:2023-10-28 21:00:42 27 4
gpt4 key购买 nike

举个例子,

以下python代码:

def multiples_of_2():
i = 0
while True:
i = i + 2
yield i

我们如何将其翻译成 C 代码?

编辑:我希望将这个 python 代码翻译成一个类似的 C 生成器,带有 next() 函数。我不是在寻找如何在 C 中创建一个函数来输出 2 的倍数。2 的倍数只是说明 C 中惰性 eval 生成器问题的一个示例。

最佳答案

您可以尝试将其封装在 struct 中:

typedef struct s_generator {
int current;
int (*func)(int);
} generator;

int next(generator* gen) {
int result = gen->current;
gen->current = (gen->func)(gen->current);
return result;
}

然后你定义你的倍数:

int next_multiple(int current) { return 2 + current; }
generator multiples_of_2 = {0, next_multiple};

你可以通过调用获得下一个倍数

next(&multiples_of_2);

关于python - 如何在 C 中实现惰性求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635827/

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