Używam Lua 5.3.Jak znaleźć `f`, który sprawia, że` pcall (pcall, f) `zwraca` false` w Lua?
Czytanie "Programowanie w Lua 3rd edition", wszedłem do ćwiczenia prosząc mnie, żebym znalazł f
, który sprawia, że pcall(pcall, f)
powraca false
. Myślę, że jest to równoważne z podnoszeniem błędu przez pcall(f)
. Ale wydaje się, że użycie tego nie wystarczy. Na przykład niech f = nil
i nic złego się nie dzieje.
Jednak znalazłem w Internecie, że pozwala f = (function() end)()
załatwia sprawę. Ale nie rozumiem, dlaczego. Tutaj f
jest tylko wartością zwracaną (która jest nil
) funkcji function() end
w prawo?
Dzięki. Czyli coś nie jest warte zauważenia? –
"Funkcje napisane w Lua nie mogą tego odróżnić": jest to coś, co 'select ('#', ...)' może dostarczyć, czyż nie jest: '(funkcja (...) print (select ('# ', ...)) end) ((function() end)()) '? –
@PaulKulchenko, tak, ale potrzebujesz pomocy z funkcji bibliotecznej, takiej jak 'wybierz'. – lhf