lua中函式為什麼有時候可以省略」()」?
dionysoslai([email protected])
20150825
首先,看兩個問題背景:
1. 簡單的
print函式
print "hello" ---> print hello,通常寫法是print(「hello」)
print 42 ---> not work,正確寫法是print(42)
2. 乙個自定義函式,注意黑體字部分;
set = {};
function set.new (t)
local set = {};
setmetatable(set, set.mt);
for i, _v in ipairs(t) do
set[_v] = true;
endreturn set;
endfunction set.union (a, b)local res = set.new{};for k in pairs(a) do res[k] = true end
for k in pairs(b) do res[k] = true end
return res;
end
一般來講,對於local res = set.new{};,一般寫法是local res = set.new();
這裡,是由於lua
函式在兩種情況下,可以省略』()』:函式中引數是乙個單獨的字串或者表。因此,myfunc
,是可以正常執行。所以,有時看到乙個函式省略了』()』,就應該反應,傳遞的引數是單個字串或者單個表。
在lua
中,這些美妙語法特性(
syntacic sugar),根本原因是由於
lua本身是乙個資料描述語言。
延伸閱讀:
中 1.16
問題。
JS為什麼有時候要做兩次encodeURI
對於var url b.jsp?name u name 要想把中文的name傳到後台,需要對url進行一次編碼,否則是亂碼。有時會亂碼,為什麼?因為接收時,直接 string paramvalue request.getparameter paramname tomcat 容器會自動解碼。encod...
Java中為什麼有時候通過指定編碼集無法解決亂碼
toc 當我們程式設計的時候都遇到過出現亂碼的情況,這通常是使用了不匹配的編碼表導致的,這是我們可以用指定的編碼表的方式解決亂碼問題如下面 的 string str 你 byte ch gbk str.getbytes gbk system.out.println arrays.tostring c...
為什麼有時候字母 f 不能從pdf檔案中拷貝出來
最近從pdf檔案中拷貝 標題的時候,發現標題中的 f 複製出來是亂碼,情況如下,複製這篇 的標題,得到 ff變成了亂碼。奇怪的是,中別處的字母f有能正常顯示的,個別組合,如fi也不能正常顯示。原因在於,這樣的字母組合就是所謂的連寫,ligatures。如果嘗試選擇連寫字母,會發現他們僅僅只是乙個字母...