mva
но, согласись, оно дело бить по рукам за глобалы, а другое - заставлять делать return где надо и где не надо
mva
вот из-за такого подхода говнокод и множится
Alexey
Это понятно. Я пока отключаю через -- luacheck: ignore ... Но при этом сокращения кода не получается. a, b, c = nil -- luacheck: ignore vs a,b,c = nil, nil, nil :)
Alexey
проверка таких предупреждений позваляет найти ошибки. Но после проверки их хочется отключить. Но не глобально
Roman
a, b, c = nil — так лучше
Anonymous
a,b,c = nil,nil,nil
Anonymous
мимокрок
Roman
a, b, c = nil — то же самое, лучше
Anonymous
тогда уж local a,b,c
Alexey
так при local мне и не нужно
Anonymous
зачем тебе вообще объявлять переменную и присваивать ей nil?
Alexey
просто luacheck на это не ругается
Alexey
мне нужно присвоить nil нескольким (существующим) переменным
Anonymous
хм
Anonymous
странно этот ваш луа работает
Anonymous
a,b,c = 1
Anonymous
присваивает единицу только a
Anonymous
a,b,c = nil
Anonymous
присваивает nil всем трём
Anonymous
наркоман)
Roman
все логично, не?)
Anonymous
неа
Alexey
a,b,c=1 a,b,c=1,nil,nil
Roman
жалко что нельзя a = b = c = 1
Roman
казалось бы, запилили бы это чисто синтаксическим разбором, код языка вообще не надо менять
Roman
но нет, леньки видимо
Alexey
присваивание это statement, а не expression. поэтому нельзя while(a = o:next()) do ... end
Roman
но можно было бы чисто синтаксическим разбором это понять
Roman
что есть написано a = b = 1, имеется в виду a = 1; b = a, преобразовать и парсить себе на здоровье
mva
Это понятно. Я пока отключаю через -- luacheck: ignore ... Но при этом сокращения кода не получается. a, b, c = nil -- luacheck: ignore vs a,b,c = nil, nil, nil :)
ну, я у вима в конфиге ставлю опции луачека которые ему передавать при линтинге :) На код не влияет :)
Alexey
Иногда подобные warning это ошибки. Поэтому я предпочитаю отключать по одной.
Alexey
только что прогнал luacheck на qless-core :)
Alexey
Total: 984 warnings / 0 errors in 2 files
Alexey
FusionPBX - Total: 11196 warnings / 0 errors in 153 files
Roman
Да вроде нет никаких причин (пока) юзать что-то кроме cjson, он самый адекватный
Alexey
cjson не собирается из LuaRocks под Windows/MSVC и с LuaJIT 2.1 beta3
Alexey
PR весят там уже несколько лет
Roman
У луа куча библиотек json, зачем? Да просто людям делать нечего было, у меня тоже своя реализация есть, конечно у каждого решения свои проблемы. У cjson проблема, что пустая таблица превращается в пустой {}, а должно бы в [], в остальном самая адекватная либа
Alexey
Я использую cjson или dkjson когда нужно Pure Lua
Roman
А, да, лол, пол года уже проблема с луаджитом) но можно проворкараундить
Alexey
У cjson проблема, что пустая таблица превращается в пустой {}, а должно бы в [] Это почему должна? В Lua {} это и пустой массив и пустой объект, Любой вариант подходит. А вот то как они преобразуют объекты типа {1, 2, 3, a = 'hello'} это спорный момент
Roman
Типа массив это подкласс объекта, и если получаешь пустой массив, то логика и для пустого массива, и для пустого объекта будет работать норм
Alexey
Какая логика? JSON это формат данных. И никакой логики там нет. И да {} и [] - разные вещи. Но оба преобразуются в пустую Lua таблицу. Это просто преобразование с потерей некоторой информации. Можно возвращать таблицы со специальной метатаблицей.
Snusmumriken
Извращение.
Roman
В луа нет разницы, вот в луа и пофиг, а json для js вообще-то придумали, там логика и ломается из-за {} когда ждешь массив
Alexey
=require"dkjson".encode(setmetatable({}, {__jsontype='array'}))
Alexey
dkjson по умолчанию конвертит в массив
Alexey
На мой взгляд нет идеального API.
mva
cjson не собирается из LuaRocks под Windows/MSVC и с LuaJIT 2.1 beta3
ну, потому что автор прокис, а собирающиеся форки с гитхаба (включая мой и openresty) не возьмут в основной манифест потому что мы не авторы.
Alexey
Я использую rockspec с патчем
Alexey
https://github.com/moteus/lua-windows-environment/blob/master/rockspecs/lua-cjson-2.1.0-1.rockspec
mva
отнюдь
mva
ну, в смысле, смотря какая выборка
mva
из тех что умер - да, почти все от потери интереса автора
mva
реже - от смерти / ухода в оффлайн автора
mva
из всех существующих - много живых
Roman
но по стандарту < 80 же?
Roman
жутко неудобно и не знаю как так люди живут, но есть стандарт такой старше меня
fgntfg
уже давно нет таких экранов, так что это, скорей, пожалание
fgntfg
это плохо
fgntfg
лучше чтоб ничего не мешало читаемости кода
Roman
когда редактор на пол экрана, или в самом редакторе файлы рядом, или в некоторых просмотрщиках изменений файлы бок-о-бок, тогда 80 вполне пригодится
fgntfg
у меня, среднедлинные строки в 40-50 символов.
Roman
80 это когда у тебя на каждой строчке минимум действий и нет лапши из колбеков, тогда код идеально читаем
Roman
а если больше, вероятно, в строки напихано-понапихано всякого подряд
Roman
лишь сообщениям об ошибках ядра позволено быть длиннее чтобы их искать можно было
Snusmumriken
Ручками считать )))
Snusmumriken
Как вариант, автозамена строк в редакторе. replace: from: '\n.{80, 100500}\n' to: '\n--!!!!\0' Типа, перед слишком большой строкой добавятся восклицательные знаки.
Snusmumriken
Ох. Ничего не изменится. Просто добавится комментарий: "--!!!!!". Типа: "Укороти эту ботву, мудила"
Snusmumriken
Тогда укорачивай эту ботву, мудила ))))
Snusmumriken
Во.
Snusmumriken
Ты хочешь магии, которая за тебя сделает "всё заебись". Так не бывает.
Snusmumriken
Есть автоматическое форматирование кода в соответствии с правилами. Но если ты сам дурак, и наобъявлял переменных длиной в 100500 символов в имени - ничто тебе не поможет. Кроме минификации. Код после этого нечитаем вообще, хотя и короткий.
Snusmumriken
Это не валидный код.
Snusmumriken
Посмотри на 54 строку. Точнее, на её конец. Кавычка открывается, а закрывается - на следующей. Спид. Ручками, ручками давай. 2к строк - это немного, всего пол часа работы обезьянкой.