How do I find an `f` that makes `pcall(pcall, f)` return `false` in Lua? -
i'm using lua 5.3.
reading 'programming in lua 3rd edition', came exercise asking me find f
makes pcall(pcall, f)
return false
. think equivalent make pcall(f)
raise error. seems use pcall
on won't that. example, let f = nil
, nothing bad happens.
however, found on internet letting f = (function() end)()
trick. don't understand why. here f
return value (which nil
) of function function() end
right?
this not work
> f = (function() end)() > pcall(pcall, f) true false attempt call nil value
but does:
> pcall(pcall,(function() end)()) false bad argument #1 'pcall' (value expected)
the difference (function() end)()
returns no value, different returning nil
. functions written in lua cannot make distinction pcall
written in c , can make distinction. (other examples print
, type
.)
note behaves expected (equivalent first attempt):
> pcall(pcall,(function() return nil end)()) true false attempt call nil value
Comments
Post a Comment