View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002244 | Wishes | Macro | public | 2013-01-06 11:06 | 2013-03-19 18:00 |
Reporter | Aidar | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | always |
Status | new | Resolution | open | ||
Platform | x64 | OS | Windows | OS Version | 7 |
Product Version | 3.0 | ||||
Summary | 0002244: Макро-функция print с поддержкой нескольких параметров | ||||
Description | Предлагаю расширить print для передачи нескольких параметров вместо использования конкатенации (либо добавить отдельную функцию, например, с названием prints). | ||||
Steps To Reproduce | Вместо print(a..tostring(b)..c) или printf("%s%d%s", a, b, c) можно будет писать prints(a, b, c) | ||||
Additional Information | Код: function _G.prints (...) for n=1,select("#",...) do co_yield(PROPAGATE, F.MPRT_PRINT, tostring(select(n,...))) end end | ||||
Tags | No tags attached. | ||||
Build | |||||
|
Предложенный код проверен: - вписал код в luamacro.lua, - вызвал prints с двумя параметрами, - вызов отработан успешно. Название не принципиально. Если нововведение скажется на скорости работы макроса, лучше сделать отдельной функцией. |
|
Ссылка на форум: http://forum.farmanager.com/viewtopic.php?f=3&t=7302&p=101963#p101961 |
|
Название желательно сохранить, чтобы максимально приблизить поведение к штатной функции Lua. |
|
Что то я не вижу принципиальной разницы между print(a..b..c) и print(a, b, c) |
|
Когда a,b,c строки - то да. А если вдруг попадётся таблица, функция или nil - увидите разницу |
|
Проблема ещё и с производительностью: конкатенация строк количеством больше трёх не рекомендуется. |
|
Не думаю, что разницу в производительности можно заметить, для меня это скорее вопрос удобства. А разница ещё и в том, что print (из Lua) добавляет отступ Примерно так print(a, b, c) print(a.." "..b.." "..c) P.S. Мантис съел пробелы, там их по 5 |
|
Как то это спорно. IMHO, само ничего добавляться не должно. Т.е должна быть простая конкатенация. А в этом случае преимуществ мало, так как строки и числа и так конкатенируются, т.е. "tostring" - не нужен. Насчет таблиц - не знаю |
|
Тут не надо ничего знать. Функция print стандартная в Lua, её поведение известно. И предлагаемое изменение совместимо с имеющимся кодом (т.е. с вашими старыми макросами) А, забыл ещё один бунус - print(ConsoleControl.BufferSize()) напечатает оба размера. |
|
Вот видите - уже несовместимо (раньше печаталась одна цифра, теперь две). Мне, конечно, все равно. Только "пять пробелов" что-то не нравятся... |
|
Я говорил о старых макросов. Раньше не могло быть 2х возвращаемых значений. А в новых макросах это легко учесть. (Если нужен только первый - просто взять в скобки.) |
|
С другой стороны я понимаю, что тут есть специфика. Возможно действительно сделать 2 разных функции. А возможно стоит просто разделить print() и mf.print() |
|
Не знаю с чего я взял 5 пробелов, на самом деле 1 табуляция |
|
Странно, у меня ничего не вставляет: печатает подряд, как и должно быть. == Вот макрос для тестирования: Macro { area = "Editor", key = "CtrlH", flags = "", description = "Edit: Test", action = function () prints("test") return prints("abc", 10, "def") end, --- } --- == Выводит при срабатывании testabc10def |
|
Имелась ввиду не ваша функция "prints", а стандартная функция Lua "print". То что она вставляет разделитель - весьма удобно. |
|
Кстати хотелось бы использовать вашу функцию, не трогая luamacro.lua. Но вижу что PROPAGATE в скриптах намеренно сделали недоступным. Как бы это обойти? |
|
Так может получиться: local print = print function _G.prints (...) for n=1,select("#",...) do print((select(n,...))) end end |
|
Действительно ) |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-01-06 11:06 | Aidar | New Issue | |
2013-01-06 11:08 | Aidar | Note Added: 0009934 | |
2013-01-06 11:08 | Aidar | Note Edited: 0009934 | |
2013-01-06 11:10 | Aidar | Note Edited: 0009934 | |
2013-01-06 11:10 | Aidar | Note Edited: 0009934 | |
2013-01-06 11:11 | Aidar | Note Added: 0009935 | |
2013-03-19 09:04 | JohnDoe | Note Added: 0010550 | |
2013-03-19 13:27 | max rusov | Note Added: 0010551 | |
2013-03-19 13:32 | JohnDoe | Note Added: 0010552 | |
2013-03-19 13:39 | Aidar | Note Added: 0010553 | |
2013-03-19 13:46 | JohnDoe | Note Added: 0010554 | |
2013-03-19 13:47 | JohnDoe | Note Edited: 0010554 | |
2013-03-19 13:47 | JohnDoe | Note Edited: 0010554 | |
2013-03-19 13:54 | max rusov | Note Added: 0010555 | |
2013-03-19 13:59 | JohnDoe | Note Added: 0010556 | |
2013-03-19 13:59 | JohnDoe | Note Edited: 0010556 | |
2013-03-19 14:00 | JohnDoe | Note Edited: 0010556 | |
2013-03-19 14:01 | JohnDoe | Note Edited: 0010556 | |
2013-03-19 14:02 | max rusov | Note Added: 0010558 | |
2013-03-19 14:02 | max rusov | Note Edited: 0010558 | |
2013-03-19 14:04 | JohnDoe | Note Added: 0010559 | |
2013-03-19 14:05 | JohnDoe | Note Edited: 0010559 | |
2013-03-19 14:15 | JohnDoe | Note Edited: 0010559 | |
2013-03-19 14:20 | JohnDoe | Note Added: 0010561 | |
2013-03-19 14:34 | JohnDoe | Note Added: 0010562 | |
2013-03-19 14:35 | JohnDoe | Note Edited: 0010561 | |
2013-03-19 17:19 | Aidar | Note Added: 0010563 | |
2013-03-19 17:21 | Aidar | Note Edited: 0010563 | |
2013-03-19 17:22 | Aidar | Note Edited: 0010563 | |
2013-03-19 17:35 | JohnDoe | Note Added: 0010565 | |
2013-03-19 17:37 | JohnDoe | Note Edited: 0010565 | |
2013-03-19 17:37 | JohnDoe | Note Edited: 0010565 | |
2013-03-19 17:45 | JohnDoe | Note Added: 0010566 | |
2013-03-19 17:45 | JohnDoe | Note Edited: 0010566 | |
2013-03-19 17:56 | Aidar | Note Added: 0010567 | |
2013-03-19 17:57 | Aidar | Note Edited: 0010567 | |
2013-03-19 18:00 | JohnDoe | Note Added: 0010568 |