|
|
|
Lua |
|
|
DarkMaster |
7.4.2017, 0:11
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Это локаль для работы Си программ. Именно Си. И программе, которая юзает такую локаль, плевать на рег. настройки. В с++ используются другие механизмы, на сколько знаю. Там вручную устанавливается локаль, и если ты вставишь русскую локаль - у тебя будет та же самая запятая. При этом нужно понимать, что не все функции ее учитывают. Есть специально написанные дабл->стринг и стринг->дабл, которые учитывают возможное появление запятой и принудительно ставят точку. Искал в свое время. Более того скажу, что в сях при разной включенной раскладке можно начать получать разный результат на выводе. Т.е. я ставил русскую локаль и при этом если в пилоте была англ раскладка включена, то получал точку, а если русская, то получал запятую. Понимаешь, почему в итоге я использовал сторонние функции? Реализация локалей спорная, а стандарт русской локали глубоко ошибочен.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Cockney |
9.4.2017, 12:32
|
Master
Сообщений: 1.395
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 21046
Пользователь №: 16.156
|
Цитата Там вручную устанавливается локаль Где там ? Цитата если ты вставишь русскую локаль - у тебя будет та же самая запятая Код setlocale(LC_NUMERIC, "ru_RU.UTF-8"); printf("%1.3f", 2.645); Выводит с точкой Код setlocale(LC_NUMERIC, ""); printf("%1.3f", 2.645); С запятой. Код Выводит с точкой. Без setlocale. Если отказаться от си-функций Код std::cout << 2.64 << std::endl; Выводит с точкой в независимости от того был ли вызов setlocale или нет. Если же ты имеешь в виду класс locale, то он не работает для printf. Объект такого класса нужно привязывать к потокам и/о. П.С. хочу еще заметить, что играет роль кодировка исходников, т.к. компилятор явно ( setlocale(LC_NUMERIC, "") ) и не явно задает локаль для функций, основываясь на кодировке исходника. У меня такая : Unicode (UTF-8 with signature) - Codepage 65001, у тебя же скорее всего Codepage -1251.
|
|
|
|
DarkMaster |
25.4.2017, 20:40
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Если в 2 словах, то ты объявил некоторый массив и первому элементу присвоил другой массив. Дело в том, что второму элементу не присвоен массив, соответственно прозрачно не дает использовать индекс. В неявном виде подобное преобразование не проходит. Присмотрись Код arr [1][1] = 20 arr [2] = 15 --arr [2][1] = 15 log (arr[1][1], arr[2]) Нужно просто предварительно присвоить элементу массив. Код arr = {{}} arr [1][1] = 20 arr [2] ={} arr [2][1] = 15 log (arr[1][1], arr[2][1]) Либо можно это делать специальным оператором: Код local t = {1, 2, 3, 4, 5} table.insert(t, 6) -- добавляет элемент в конец массива. Теперь t = {1, 2, 3, 4, 5, 6} table.insert(t, 0, 1) -- вставляет элемент по индексу, сдвигая оставшиеся элементы массива. Теперь t = {0, 1, 2, 3, 4, 5, 6} table.remove(t, 3) -- удаляет из таблицы элемент по индексу 3 и сдвигает оставшиеся элементы. Теперь t = {0, 1, 3, 4, 5, 6} Сообщение отредактировал DarkMaster - 25.4.2017, 20:41
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
cirus |
26.4.2017, 2:39
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26702
Пользователь №: 16.971
Возраст: 29
|
В пилотовском варианте намного проще (IMG: style_emoticons/default/smile.gif) Код --lua arr = {} arr [1] = 20 arr [2] = 15 table.sort(arr) log (arr[1], arr[2]) --Тут всё понятно. Как сортировать это?: Код --lua arr = {} arr [1] = {20, 10, 15} arr [2] = {15, 5, 13} Т. е. должно получится: Код arr [1] = {15, 5, 13} arr [2] = {20, 10, 15} Код --lua h, m , s = string.match("11:33:55", "(%d+):(%d+):(%d+)") log (h, m , s) Реально ли прикрутить регэкспы перл? В регулярках луа отсутствуют \d{3,5}, |, (?<=), (?=) и прочее. По сути они вообще какие-то урезанные.
|
|
|
|
DarkMaster |
26.4.2017, 19:53
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Как сортировать это?: table.sort (table [, comp]) Сортирует элементы таблицы в заданном порядке, внутри таблицы, начиная с table[1] и заканчивая table[n], где n – длина таблицы. Если параметр comp задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго (т.о. not comp(a[i+1],a[i]) будет верно для любого i будет давать true после окончания сортировки). Если comp не задан, то вместо него будет использован стандартынй оператор Lua "<". Алгоритм сортировки не стабилен; в том смысле, что равные элементы могут быть переставлены в процессе сортировки. Цитата Реально ли прикрутить регэкспы перл? В регулярках луа отсутствуют \d{3,5}, |, (?<=), (?=) и прочее. По сути они вообще какие-то урезанные.
можно попробовать линкануть либу, но я так и не понял как в пределах пилота это делать.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|