在Lua中,使用=操作符不具有1-值似乎是等效於一個打印(r值),這裏是在Lua中獨立的解釋器運行的幾個例子:的Lua =操作者打印
> = a
nil
> a = 8
> = a
8
> = 'hello'
hello
> = print
function: 003657C8
依此類推...
我的問題是:哪裏可以找到=運算符的用法的詳細說明?它是如何工作的?它是暗示一個特殊的默認l值?我想我的問題的根源是,我不知道該怎麼在谷歌鍵入找到關於它的信息:-)
編輯:
感謝您的答案,你是正確的它是一個功能口譯員。愚蠢的問題,因爲我不知道我完全忽略了這個顯而易見的原因。我應避免早晨咖啡:-)爲了完整發布之前,這裏是與此在解釋處理代碼:
while ((status = loadline(L)) != -1) {
if (status == 0) status = docall(L, 0, 0);
report(L, status);
if (status == 0 && lua_gettop(L) > 0) { /* any result to print? */
lua_getglobal(L, "print");
lua_insert(L, 1);
if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0)
l_message(progname, lua_pushfstring(L,
"error calling " LUA_QL("print") " (%s)",
lua_tostring(L, -1)));
}
}
EDIT2:
要真正完成,有關推動整個招堆棧中的值位於「pushline」函數中:
if (firstline && b[0] == '=') /* first line starts with `=' ? */
lua_pushfstring(L, "return %s", b+1); /* change it to `return' */
但爲什麼不在錯誤的語法barf? – 2008-09-27 08:52:53