2017-01-19 36 views
2

如果要判斷一個變量是一個功能,我用下面的方法確定變量是否爲函數的快速方法?

function isFunction(variable) 
    return type(variable) == "function" 
end 

據我所知,這是一個字符串比較。據我瞭解,字符串比較是相對較慢,我擔心這個函數可能是我的代碼中的一個瓶頸。有沒有一種成本較低的方法來確定變量是否是函數?

我希望有一個函數返回一個整數,而不是指示變量的類型。或者我可以用另一種方式問我的問題:type(var)如何確定變量的類型?當然,每個變量都不能包含代表其類型的字符串,所以我猜測lua中有一些後端材料在調用type(var)時查找字符串"function"

+0

不確定你是否應該考慮你的軟件設計,如果你必須經常檢查變量是否是一個函數,以至於它是一個重要的瓶頸... – Piglet

+0

老實說,不是我正在尋找的答案,但你是對。它讓我思考,我可能不需要一種快速的方式來檢查類型。爲了這個問題,我們如何假裝我要求檢查它是否是一個字符串;-) – gromit190

+0

Aside; 「變量」應該是「價值」。變量不具有類型;只有值纔是值。值由表達式產生,當然,它可以像變量一樣簡單。 –

回答

8

Lua中的字符串比較非常快,因爲大多數字符串都是被實施的。

在內部,每個Lua值都包含標識其類型的標籤。 type使用的是這個標籤。

相關問題