朱莉娅:如何在函数退出时执行一些代码?例如lik R的`on.exit`?

xia*_*dai 2 julia

我有一段代码可以运行,并且我想在函数的出口处执行一些代码,例如关闭连接。

fn(io) = begin
  write(io)
  # do lots of stuff which can fail
  ...
  # want close connection
  on_exit(()->close(io))
end
Run Code Online (Sandbox Code Playgroud)

DNF*_*DNF 7

对于此特定示例,您可能会使用一个do块:

open("myfile.txt", "w") do io
    write(io, "Hello world!")
end
Run Code Online (Sandbox Code Playgroud)

在更一般的情况下,您可以使用finally。从文档字符串:

当给定的代码块退出时,无论它如何退出,都运行一些代码。例如,这是我们可以保证关闭打开的文件的方法:

  f = open("file")
  try
      operate_on_file(f)
  finally
      close(f)
  end
Run Code Online (Sandbox Code Playgroud)