Erlang での unwind-protect
Common Lisp での次の式は
(unwind-protect (print "protected") (error error))
Erlang では次のようになります。
try erlang:error(error) after io:format("protected") end.
with-open-file(むしろ call-with-input-file でしょうか) 相当の実装は次のようになります。
-module(with).
-compile(export_all).
open_file(File, Fun, Mode) ->
{ok, IoDevice} = file:open(File, Mode),
try Fun(IoDevice)
after
file:close(IoDevice)
end.
test() ->
File = "/tmp/a.txt",
open_file(File,
fun(IoDevice) ->
io:write(IoDevice, "Hello")
end,
write),
open_file(File,
fun(IoDevice) ->
io:get_line(IoDevice, "")
end,
read).
0 件のコメント:
コメントを投稿