2013-10-10 49 views
0

很多時候我需要有一個變量來表達某種東西的類型,但是您可能知道它也是Lua中函數的名稱。「類型」的Lua替代品

什麼可能是一個適當的解決方法?我想到:

  1. 無論如何使用它。由於我幾乎只使用本地值,因此類型函數不會被覆蓋,但會暫時無法訪問(用作參數名稱時也是一個問題)。
  2. 使用單詞「類型」(可能是最簡單的解決方案)的同義詞,但我不能拿出任何好東西。
  3. 使用大寫字母,前綴/後綴,如Type,TYPE_type,但它違背了目前使用的代碼風格。
  4. 將類型函數保存爲其他內容並在最後將其恢復。
  5. 添加對type的全局引用,例如調用'typeof',以便在本地使用type時,仍然可以使用typeof。
  6. 重新編譯的Lua與類型功能不同的名稱(不,謝謝!)
+0

這不是一個問題,你已經列出了選項,優點和缺點,並且由你選擇更適合你需求的選擇。至於第一種選擇 - 我會補充說它很容易出錯,有一天你會忘記「本地」。 'typeof'可能是builtin的一個好名字,因爲它在其他語言中廣爲人知,但有經驗的lua腳本編寫者可能會發現它是意想不到的 - 這實際上取決於誰會寫這些腳本。 – keltar

+0

您在尋找類型的替代品嗎?你正在創建一個使用'type'這個名稱的新函數,它是基於觀點的如何解決問題,但我的建議是簡單地給你的函數另一個名字。 –

回答

2

唯一明智的選擇是#2和#3,選擇其中一個通常是要求麻煩。

請記住,命名約定就是這樣,約定。在例外情況下違反約定使代碼更具可讀性是件好事。另一方面,使用標準庫名稱進行重載/更改/擺弄更加糟糕,尤其是因爲您只是爲了避免某些您不太喜歡標識符的名稱。

雖然它們不被認爲是與C具有相同強規則的保留標識符(唯一真正保留的名稱是begins with an underscore followed by a capital letter),但應該認爲Lua標準庫名稱是保留的,除非您有一個非常有說服力的理由否則,特別是在大型應用中。保留命名約定並不是一個令人信服的理由。

1

通常我用這個詞kind用於這一目的。

+0

我明白了,謝謝。我太習慣於用「類型」來思考另一個詞的感覺有點奇怪。我猜我必須習慣它。 –