| Author |
Message |
|
|
В самом Lua такого нет, нужно использовать внешние библиотеки.
Варианты:
-- глянуть LuaPosix (хотя и не уверен, что там это есть).
-- воспользоваться библиотекой luaffi (или ffi из LuaJIT).
-- самому сделать библиотеку, делающую необходимые функции доступными из Lua.
|
 |
|
|
Kumar wrote:Варианты решения описаны в документации к SWIG, но прикручивать libffi большого желания нет.
Есть другие идеи или решения?
В общем виде других решений не существует, так как вызов C-функции должен компилироваться.
А для Polyline как раз легко сделать с помощью цикла вызовов в C, добавляя каждый раз один отрезок линии.
|
 |
|
|
(это моё последнее сообщение в данной теме)
"Странные" - в противовес "распространённым", "стандартным", "известным".
По крайней мере, во всех известных мне системах кодирования стрингов с экранированием (escaping), предусматривается экранирование самого экранирующего символа. В то же время я согласен с Erendir, что могут быть упрощённые системы (те, что я назвал доморощенными), где этого может и не требоваться. То же касается и кодирования пустых строк.
|
 |
|
|
|
Выше было указано почему.
|
 |
|
|
Erendir wrote:странно, но не невероятно. Например, внутри кавычек - исключительно фамилии. Там иногда могут встретится кавычки (д'Артаньян), но никогда "\".
Ну вот и договорились: выражение [['(.-[^\])']] таки будет работать, но только на странных (скорее всего - доморощенных) системах.
|
 |
|
|
Erendir wrote:
возможность экранирования чего-либо, кроме одинарной кавычки не оговаривалась.
Было бы весьма странно, если бы экранирование самого символа экранирования не было предусмотрено, не так ли?
|
 |
|
|
Erendir wrote:
Это не будет работать ни на строках типа:
то есть, оканчивающихся заэкранированным обратным слешем, ни на пустых:
|
 |
|
|
Вот пример решения с использованием Lrexlib:
|
 |
|
|
Регулярные выражения Lua недостаточно мощны для этой задачи.
Варианты решения:
-- написать парсер, анализирующий входной текст посимвольно
-- использовать внешнюю библиотеку (LPeg, Lrexlib и т.д)
|
 |
|
|
Ниже следует пример с регистрацией до трёх Lua-функций (не тестировалось, но идея должна быть ясна). Измените данный код, чтобы вместо 3-х функций было 20 или 100 (т.е. максимально сколько вам может понадобиться).
|
 |
|
|
|
Нужны дополнительные детали, а именно, допустим вам достаточно иметь только одну Lua-функцию - как будет выглядеть хэндлер? Дайте пример кода.
|
 |
|
|
Возможно, что автор темы имел в виду такую постановку задачи: определить разбиение суммы на компоненты З, С и М таким образом, чтобы максимизировать З, затем максимизировать С, ну и для М - что останется.
В этом случае действительно есть единственное разбиение на составляющие:
|
 |
|
|
Эта задача не имеет единственного решения, а имеет множество решений, поскольку имеется всего одно линейное уравнение с 3-мя неизвестными:
В общем случае, количество уравнений должно быть равно количеству неизвестных.
Поясню ещё примером: имеются банкноты 100-рублёвые и рублёвые, а также копеечные монеты. При этом сумму, например в 5000 рублей, можно получить огромным множеством способов из заданных трёх номиналов валюты.
Количество способов для данного примера легко подсчитать:
|
 |
|
|
|
Книгу не читал. На Амазоне есть один комментарий на неё. Автор комментария оценил книгу в 3 балла по 5-балльной шкале. Книга явно не для начинающих. Однако, если вам хочется читать, то Lua-users wiki содержит огромное количество полезнейшего материала - и бесплатно.
|
 |
|
|
Erendir wrote:Помогите найти либу вроде lfs, которая бы понимала, что D:\CH 漢語\DE üöäß\RU ёйцу\EN.txt -- это действительно файл, и он таки существует.
стандартный io, lfs, ex -- не работают.
Посмотрите на следующие проекты, может что-то и подойдёт:
1. LuaPlus.
2. Quylthulg. Только для Windows.
3. LuaFAR. Только для Windows. Внутри содержится модуль uio, который можно сделать отдельной библиотекой.
|
 |
|
|