Go defer に相当する Ruby は何ですか?
概要
私は Ruby の初心者で、これを使用するプロジェクトに取り組んでいます。 Go は defer ステートメントを提供します。私はその関数を Ruby で複製する方法を知りたかったのです。
例:
dst, err := os.Create(dstName)
if err != nil {
return
}
defer dst.Close()
解決策
Ruby には defer ステートメントに相当する適切なステートメントはありませんが、特定のコード ブロックが確実に実行されるようにしたい場合は、ensure ステートメントを使用できます。違いは、defer のようにコード ブロックをスタックできないことですが、結果は同じです。
ブロック内
begin
# ...
ensure
# This code will be executed even if an exception is thrown
end
メソッド内で
def foo
# ...
ensure
# ...
end