为什么我在 lua 函数中没有看到打印输出?

我的问题有多个部分,但首先这是我的 Lua 代码示例(test.lua):

local traceback = debug.traceback

local inspect = require('inspect')

local foo = "function nop(); print('this is war'); return true; end"

local f = loadstring(foo)

local result = f()

print(result)

local status, val= xpcall(function () return f() end,debug.traceback)

print('status .. ' .. tostring(status))

print(val)

那么,

  1. 当我运行 local result = f() 时,我仍然看到 result 的值为 nil

  2. 当执行函数 f 时,我为什么看不到 print 输出。

点赞
用户258523
用户258523

foo 中加载到 f 的代码块并不返回任何值。

它仅定义了一个函数。

如果你想在运行代码块时返回该函数,你需要在字符串的末尾添加 return nop

2015-08-28 13:44:49