Юлия: Как выполнить некоторый код при выходе из функции? Например, R '`on.exit`? - PullRequest
2 голосов
/ 01 октября 2019

У меня есть фрагмент кода, который я запускаю, и я хочу выполнить некоторый код при выходе из функции, например, чтобы закрыть соединение.

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

1 Ответ

7 голосов
/ 01 октября 2019

В этом конкретном примере вы, вероятно, используете блок do:

open("myfile.txt", "w") do io
    write(io, "Hello world!")
end

В более общем случае вы можете использовать finally. Из строки документации:

Запускать некоторый код при выходе из данного блока кода, независимо от того, как он выходит. Например, вот как мы можем гарантировать закрытие открытого файла:

  f = open("file")
  try
      operate_on_file(f)
  finally
      close(f)
  end
...