Перейти к содержимому
swg2you

Забавное поведение <...> в Lua

Рекомендуемые сообщения

Вот нашел интересное решение:

condition = true
a = false
b = true

x = (condition and {a} or {b})[1]
print(x) --> false

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И еще один примерчик по теме:

function ret123()
    return 1, 2, 3
end

f, g, h, i = 0, ret123()
print(f,g,h,i)                  --> 0   1   2   3

f, g, h, i = ret123(), 4
print(f,g,h,i)                  --> 1   4   nil nil
Изменено пользователем swg2you

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

И еще один примерчик по теме:

function ret123()
    return 1, 2, 3
end

f, g, h, i = 0, ret123()
print(f,g,h,i)                  --> 0   1   2   3

f, g, h, i = ret123(), 4
print(f,g,h,i)                  --> 1   4   nil nil

Читай исходники, там всё расписано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Читай исходники, там всё расписано.

Орехи грецкие кушай ты. Йода много в них есть.

qQ9boXH2tUA.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Орехи грецкие кушай ты. Йода много в них есть.

qQ9boXH2tUA.jpg

:D.Шутки шутками, а я правду говорю, вы же тут странное поведение lua обсуждаете, ответ можно найти в исходниках почему такая логика.

Можно даже разработчикам сообщить, что бы пофиксили.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

:D.Шутки шутками, а я правду говорю, вы же тут странное поведение lua обсуждаете, ответ можно найти в исходниках почему такая логика.

Можно даже разработчикам сообщить, что бы пофиксили.

Ноп. Коротко говоря, - Это не баг это фича!

 

Это не странное, а более чем нормальное поведение ЛУА. Это поведение "оператора пакетного присваивания" освещено в официальной документации, но такое поведение "пакетного присваивания" порождает некоторые не совсем очевидные моменты, которые я, обозвав "забавными", и счел нужным запостить в отдельную тему.

 

С образовательной целью, так сказать. Чтобы те, кто этой фичи не знает, могли поразмышлять над примерчиком, понять почему так происходить и уяснить для себя правило ЛУА, "Пакет только в конце". Ну и чтобы потрындеть над забавностями столь чудесного языка, чего уж там греха таить. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну и чтобы потрындеть над забавностями столь чудесного языка, чего уж там греха таить. 

Ха, а я думал ты уже наигрался с луа и пошел дальше ПО для турбин писать  :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ха, а я думал ты уже наигрался с луа и пошел дальше ПО для турбин писать  :D

Правильно думал, я вообще с программированием уже давно наигрался. Сейчас играюсь проектируя лазерный гравер, уже вторую модификацию выпускаем.

 

А в кодирование меня ЛУА потянул(-а, -о). Концепция языка, красивая, зараза, вызвала довольно длительный рецидив. Пришлось, скрипя мозгами, погружаться в ночные медитации ;) Да и приятно было тряхнуть стариной, и с себе подобными пообщаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...