我有兩個字符串。其中之一經常(但不總是)空着。另一個是巨大的:Lua優化與空字符串連接嗎?
a = ""
b = "... huge string ..."
我需要連接兩個字符串。所以,我做到以下幾點:
return a .. b
但是,如果a
是空的,這會,暫時不必要創造巨大的字符串的副本。
所以我想如下寫它:
return (a == "" and b) or (a .. b)
這樣就解決了問題。但是,我想知道:Lua是否優化了一個涉及空字符串的串聯?也就是說,如果我們寫a .. b
,Lua檢查是否有任何字符串是空的並立即返回另一個字符串?如果是這樣,我可以簡單地寫a ..b
而不是更詳細的代碼。
這可能是有用的:http://stackoverflow.com/questions/19138974/does-lua-optimize-the-operator – filmor
@filmor:這是我自己誰問了另一個問題,這是不相關的一:另一個問題是關於將((a .. b).. c).. d')摺疊成「..(a,b,c,d)'。 *這個問題涉及其他事情。 –
@Leri:我沒有看到如何檢查字節碼可以幫助我回答這個問題:在運行時字符串不是空的*,而不是在編譯時。我上面寫的代碼'a =「」'只是爲了解釋問題。在現實生活中,這將是'a = ...一些表達......'。 –