为什么我在lua函数中看不到print

时间:2015-08-28 13:36:08

标签: 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 o / p。

1 个答案:

答案 0 :(得分:4)

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

它定义了一个函数,但它就是它。

如果要在运行时从块中返回该函数,则需要将return nop添加到字符串的末尾。