Метатабличный / Говнокод #19860 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
a = {}
table.insert(a,a)
a[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][21312] = 5
a[1][1][1][1][1][1][1][1][1][1] = 1
print(a[1], a[21312]) -- Вывод: 1, 5

Запостил: Sfabrikan Sfabrikan, (Updated )

Комментарии (24) RSS

  • Вау, ссылка на таблицу в самой таблице!
    Ответить
  • хм. попробовал в перл перевести и сразу обломался:
    $a = [];
    $a->[0] = $a;
    $a->[0][0][0][0][0][0][0] = 1; # аналогично `$a->[0] = 1;`, и убивает рекурсию.

    задаюсь теперь вопросом как именно это в луа работает.

    PS или оно работает только потому что `a[1] = 1` стоит в конце?
    Ответить
    • > и убивает рекурсию.
      > или оно работает только потому что `a[1] = 1` стоит в конце?
      Да.
      Если я правильно понимаю, ваши примеры эквивалентны. В 4 строке автор как раз убивает рекурсию, из-за чего в 5й выводится "1".
      Ответить
      • Ты бы этим ипаирсом ничего бы и не узнал даже если бы рекурсия бы существовала, а не была сломана еденицой! Ты бы просто получил бы таблицу!
        Ответить
            • table: 0x833dd30 1

              не похоже на

              key 1 value 1
              key 21312 value 5

              правда?
              Ответить
              • Потому что я в саму таблицу не в нес ничего кроме ее самой в 1 элемент, откуда я смогу взять ссылку на нее и последующее 1 элементы. Все равно это одна и та же таблица.
                Ответить
    • $a->[0][0][0][0][0][0][0] = 1;


      Как это вообще заработало? там же кругом arrayref-ы. И во-вторых, кто же в здравом рассудке использует $a и $b вне sort (и подобных)?

      Нужно так:
      $a->[0]->[0]->[0]...

      http://ideone.com/4Ntr7z
      Ответить
      • > Как это вообще заработало?
        > Нужно так:

        перл5 автоматом hashref'ы и arrayref'ы дерефит в таких выражениях как минимум лет пятнадцать уже.

        http://perldoc.perl.org/perlref.html - "The arrow is optional between brackets subscripts"

        > И во-вторых, кто же в здравом рассудке использует $a и $b вне sort (и подобных)?

        читай "perldoc -f local" ( http://perldoc.perl.org/functions/local.html ) и оттуда дальше в доку тыкай.
        Ответить
  • Ебать, тут есть раздел для LUA!
    А я уж подумал, что страйкер ожил.
    Ответить
      • Можешь страйкер написан на Луа?

        Может страйкер - игра и написан на love?

        Можно ли тогда сказать, что страйкером движет любовь?
        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8