如何在 Julia 中编写一个简单的函数,类似于 python 中带有 yield 关键字的函数

How to write a simple function in Julia similar to a function with yield keyword in python

提问人:Vinod 提问时间:9/4/2023 更新时间:9/18/2023 访问量:45

问:

我有一个非常简单的函数来说明 python 中的 yield 关键字:

def simpleFun():
    yield 1 
    yield 2 
    yield 3 
x=simpleFun() 
print(x.next()) 
print(x.next()) 
print(x.next()) 

这将输出

1
2
3

如何在 Julia 中编写等效函数。

我已经看到“yield”关键字在 Julia 的不同上下文中使用。 参考文献 : “yield” 关键字在 Julia 中有什么作用?

朱莉娅 克鲁斯

评论

0赞 Tim Roberts 9/4/2023
yield本质上是创建协程,Julia 支持协程。最接近的等价物是 @tasks。
0赞 Sundar R 9/4/2023
相关问题:stackoverflow.com/questions/46894052/... (茱莉亚专家:那里的信息是否仍然足够相关,以至于这个问题应该作为重复项关闭?
1赞 Sundar R 9/4/2023
相关软件包: github.com/jolin-io/Continuables.jl github.com/JuliaDynamics/ResumableFunctions.jl
1赞 phipsgabler 9/5/2023
这回答了你的问题吗?朱利安做 Python 产量(和产量)的方法

答:

2赞 Bill 9/18/2023 #1

下面是遵循 Python 代码样式的方法:

julia> using ResumableFunctions

julia> @resumable function simplefunction()
           @yield 1
           @yield 2
           @yield 3
       end
simplefunction (generic function with 1 method)

julia> x = simplefunction()
var"##simplefunction_FSMI#293"(0x00)

julia> print(x())
1
julia> print(x())
2
julia> print(x())
3