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

Wireless flash - заливаем прошивки eeprom удаленно

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

1 час назад, hohserg сказал:

Я так понимаю, вопрос в том, что _ передается в аргументы функции?

Вопрос, скорее всего, связан с этим фрагментом кода:

load(code,"bios",_,_g)

Здесь происходит обращение к несуществующей переменной.

 

56 минут назад, hohserg сказал:

Можно вставлять в начало своих программ че-то типо...

Это уже лишний код. А использовать заведомо несуществующую однобуквенную переменную вместо nil, по моему мнению, имеет смысл лишь для экстремального уменьшения объёма кода в ущерб читаемости и производительности. Или существуют другие хорошие применения этого трюка?

 

 

 

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


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

Ваще-то читаемость повышается (при этом не стоит забывать, что читаемость это свойство читателя, а не свойство текста)

Сравни:

local _,_,sender,_,_,_,receivedValue = event.pull("modem_message", _, _, expectedPort, _, "expectedMsg")
--vs--
local _,_,sender,_,_,_,receivedValue = event.pull("modem_message", nil, nil, expectedPort, nil, "expectedMsg")

 

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


Ссылка на сообщение
Поделиться на других сайтах
57 минут назад, hohserg сказал:

Ваще-то читаемость повышается...

Сравни:

Сравнил. Код стал немного компактнее. Но теперь чтобы читать, требуется пролистать весь код и убедиться в том, что _==nil. А проверив, требуется держать это в уме. И при модификации кода тоже надо помнить об этом. Я понимаю, почему @rootmaster и другие новички спотыкаются.

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


Ссылка на сообщение
Поделиться на других сайтах
В 28.06.2022 в 13:10, hohserg сказал:

Я так понимаю, вопрос в том, что _ передается в аргументы функции?

Типо, обычно нижнее подчеркивание юзается для цели присваивания, чтобы проигнорировать какое-то значение. Конечно, это не значит, что переменная с таким именем всегда nil(а было бы неплохо)

Можно вставлять в начало своих программ че-то типо


local ignoreUnderlineAssignation = {
  __newindex = function(self, k, v) if k~="_" then rawset(self,k,v) end end, 
  __index = function(self, k) if k=="_" then return nil else return rawget(self,k)end end
}
setmetatable(_G, ignoreUnderlineAssignation)
setmetatable(_ENV, ignoreUnderlineAssignation)

Токо это не работает из-за странной природы _ENV. Если кто-то шарит, как работает _ENV, напишите, плиз

я шарю в _ENV, но городить такие костыли вовсе не обязательно, достаточно сувать в _ а вытягивать nil прямо из nil(пример: func(1, 2, nil, 4, 5))

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


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

зачем ты используешь костыль в виде искусственного освещения, ведь есть солнце? 

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


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

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

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

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

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

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

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

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

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


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