0

Many times I need to have a variable to express the type of something, but as you probably know it is also the name of a function in Lua.

What could be a proper workaround? I thought of:

  1. Use it anyways. Since I use almost only local values, the type function isn't overwritten but it becomes temporarily inaccessible (also a problem when used as an argument name).
  2. Using a synonym of the word "type" (probably the easiest solution), but I can't come up with anything good.
  3. Using upper case, prefix/suffix, like Type, TYPE or _type, but it goes against the code style used so far.
  4. Save the type function as something else and restore it at the end.
  5. Add a global reference to type called for example 'typeof' so that when type is used locally I can still use typeof.
  6. Recompile Lua with a different name for the type function (no thanks!)
4

2 に答える 2

2

適切なオプションは #2 と #3 だけです。他のオプションを選択すると、通常、問題が発生します。

命名規則は単なる規則であることに注意してください。例外的なケースとして、慣習を破ってコードを読みやすくすることは良いことです。

一方、標準ライブラリ名のオーバーロード/変更/いじりは、特に識別子にあまり好きではない名前を避けるためだけに行うため、はるかに悪いです。

これらは、C と同じ強力な規則を持つ予約済みの識別子とは見なされませんが (実際に予約済みの名前は、アンダースコアで始まり、大文字が続く名前のみです)、非常にやむを得ない理由がない限り、Lua 標準ライブラリ名は予約済みと見なす必要があります。特に大規模なアプリケーションでは。命名規則を維持することは、それほど説得力のある理由ではありません。

于 2013-10-10T16:44:30.317 に答える
1

kind通常、私はその目的でこの言葉を使用します。

于 2013-10-10T10:11:39.037 に答える