lua中函式為什麼有時候可以省略」 」

2021-07-04 19:59:43 字數 1054 閱讀 7659

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。如果嘗試選擇連寫字母,會發現他們僅僅只是乙個字母...