lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


I try to minimaize introducing new problems. This is simpler version
https://pastebin.com/fj3wXBXq

scope(function(auto)
    f1=auto(io.close){ io.open("test1.txt","w") }
    f2=auto(io.close){ io.open("test2.txt","w") }
    f3=auto(io.close){ io.open("test3.txt","r") }
    f1:write "test"
end)

вт, 25 июн. 2019 г. в 21:15, Francisco Olarte <folarte@peoplecall.com>:
>
> Sergey:
>
> On Tue, Jun 25, 2019 at 7:49 PM Sergey Kovalev <kovserg33@gmail.com> wrote:
> > Can this code solve auto close problem https://pastebin.com/LPxHKKp8
>
> It can solve some problems, and introduce others ( one of them is lack
> of doc for it, but I'll blame that on the situation, and it seems to
> assume init/error/done and some more donot error, and gives you lot of
> behaviour which may be adequate for a project but not for others ).
>
> For a big project, writing one of these and sticking to it, may be
> good. <toclose> can be used as a building block for that, and as the
> final solution if appropiate, it's basically a try-with-resources,
> useful for somethings, not so much for others, quite powerful, being a
> built-in, if you shape your code to use it. And being a built-in it
> has the potential to save you a lot of code compared to other
> alternatives. It seems it could be totally emulated by using pcall
> wisely, but it is simple to use and short.
>
> The only thing I dislike is the propagation on all the line ( which I
> thing has been pointed as leading to problems in some io.open examples
> ), and may be the constness ( which forbids me shutting down __close,
> but this can be easily avoided with a mini class ) and optional
> closing can easily be done by deferring <toclose> a bit, which can
> also solve the io.open problem.
>
> Francisco Olarte.
>