Почему я не могу использовать набор: Union () вместо Set.union?

StackOverflow https://stackoverflow.com/questions/3779671

  •  04-10-2019
  •  | 
  •  

Вопрос

Я изучаю Луа, и я бы предпочел бы использовать толстую кишку (:) для методов. К сожалению, это не работает везде. Смотри мой код:

Set = {} Набор функций mt = {{} mt = {}: новый (m) локальный set = {} setmetatable (set, mt) для a, b в парах (m) Установите набор [b] = Набор функций True Close Return. Union (A, B) Локальный res = Set: New ({}) для k в парах (а) do res [k] = true End for K в парах (b) do res [k] = True End Return RES END MT MT .__ add = set.union - почему установлено: Union () здесь не работает? S1 = Set: NEW {22,55,77} S2 = SET: NEW {2,5,3} S3 = S1 + S2

Как я могу использовать Set:union() На упомянутом месте или здесь невозможно использовать?

Это было полезно?

Решение

Поскольку толстая кишка является синтаксическим сахаром только для определения и вызова функции. Как вы, вероятно, прочитали obj:f() эквивалентно obj.f(obj) а также function A:f() эквивалентно function A.f(self). Отказ Это все толстой кишки для.

В вашем примере Set:union не входит в ни одно из двух применений выше. Не на самом деле не больше, но не стесняйтесь спрашивать :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top