gpt4 book ai didi

scope - 如何在 Julia 中获取 `do` block 的值?

转载 作者:行者123 更新时间:2023-12-05 09:36:59 25 4
gpt4 key购买 nike

我有一个 HDF5 文件,我想从中读取 2 个数组。如何使用 do block 表示法获取它们?

using HDF5

function myfunc()
h5open("path", "r") do f
a = read(f, "a")
b = read(f, "b")
end

# ... do some more processing of a, b
return a, b
end

如果我运行它,它会在 do block 之后出错并显示 a not defined。我如何获取这些值以便我可以在之后处理它们,而不用将完整的计算包装在 do block 中?

最佳答案

do block 只是用于创建作为第一个参数传递的匿名函数的语法(在本例中为 h5open)。就像常规函数一样,您需要从要在“外部”使用的匿名函数返回任何值:

# Function to mimic Base.open, HDF5.h5open etc
function open(f)
return f()
end

function g()
a, b = open() do
c = "hello"
d = "world"
return c, d # returns from the "do"-anonymous function
end
return a, b
end

关于scope - 如何在 Julia 中获取 `do` block 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64651377/

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