结论:在Lua中,没有包含返回语句的function在调用时,返回值是 nil。 示例代码如下 - function run()
- local a = 10
- -- return a
- end
- ret = run()
- if ret == "" then
- print("Return null string.")
- elseif ret == nil then
- print("Return nil.")
- else
- print("return other value.")
- end
- print(ret)
- if run() == "" then
- print("Return null string.")
- elseif run() == nil then
- print("Return nil.")
- else
- print("return other value.")
- end
- print(run() )
- print(run() + 5)
输出结果为: - Return nil.
- nil
- Return nil.
- lua: funret.lua:30: attempt to perform arithmetic on a nil value
- stack traceback:
- funret.lua:30: in main chunk
- [C]: ?
注意,上例中,在 print(run()) 的时候,输出为一个空行,估计是print对函数返回值为nil时忽略了要打印的nil,print的问题,而不是“函数没有任何返回值”。
|