Archie_ (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как из таблицы получить значения самое близкое к указанному?
 
Код
   
    local t = { 1.235, 3.215, 4.953, 5.531, 11.845, 14.312, 15.359, 15.498 }
  
    local function nearest(v,tbl);
        local x,val;
        for i = 1, #tbl do;
            local dlt = math.abs(v-tbl[i]);
            if not x or dlt < x then;
                x = dlt;
                val = tbl[i];
            end;
        end;
        return val;
    end;
    
    print( nearest( 8   , t ) )
    print( nearest( 14.5, t ) )
    print( nearest( 2   , t ) )
    print( nearest( 2.7 , t ) )
Как из таблицы получить значения самое близкое к указанному?
 
Привет всем!
Подскажите пожалуйста, как из таблицы  получить значения самое близкое к указанному?
То есть:
например есть таблица T и есть определенное значение val
Код
T = {1.235,3.215,4.953,5.531,11.845,14.312,15.359,15.498}
val = 12
Так вот, значение val равно 12, значит из таблицы надо вытащить 11.845
если val равно 14,5 , значит из таблицы надо вытащить 14.312
если val равно 2, значит из таблицы надо вытащить 1.235
если val равно 2,7 значит из таблицы надо вытащить 3.215

Спасибо!
Функцию с двоеточием в таблицу, как запихнуть функцию string в таблицу.
 
И возможно ли это вообще?
Функцию с двоеточием в таблицу, как запихнуть функцию string в таблицу.
 
Привет всем!
Подскажите пожалуйста как запихнуть функцию string  в таблицу.
Таблица нужна для того, что бы функцию положить в модуль. Конечно можно и обойтись без таблицы, но по таблице я еще определяю модуль.

Вот  в примере "foo1" в таблице, а "foo2" string, так вот - как эти функции объединить?
Код
   T={}
   function T.foo1(x)
       return string.reverse(x)
   end
   T.foo1("123") -- вернет 321
   
   
   function string:foo2()
       return string.reverse(self)
   end
   ("123"):foo2() -- вернет 321
Пытаюсь сделать так, но это не работает
Код
   T={}
   function T.string:foo3()
       return string.reverse(self)
   end
Спасибо.
Строку в Математическое выражение.
 
loadstring()  по каким то причинам (не знаю по каким) у меня не работает, но все равно вы меня направили в нужном направлении.
Спасибо большое!
Решил с помощью load();
Код
    local STRING = "5*5+5"
    
    NUMB = load("return "..STRING)();
Строку в Математическое выражение.
 
Привет ребят!
Подскажите как строку превратить в математическое выражение, т.е. есть строка "5*5" или "15/3" или "15*7/3" и мне надо получить ответы этих выражений.
tonumber() со строками не работает почему то.
Подскажите пожалуйста, кто знает, что можно придумать, как выйти из этого положения. Буду раб любым примерам. Спасибо!
Код
--Работает
tonumber(5*5) 

--Не работает ((
tonumber("5*5") 
Подменить число в строке
 
Подскажите пожалуйста, как подменить число в строке.
Есть вот такая строка
Код
"ShowMix 1 0.6667 0.5 1 0.5 0 0.6667 0"
и надо подменить второе число в строке на другое, т.е. первое 0.6667 на какое то другое, как это осуществить?
Спасибо
Сократить запись
 
Всем Привет!
Извините меня за глупый вопрос, но все же спрошу, а вдруг.))
Подскажите пожалуйста, возможно ли в луа как то сокращать записи?
Например:
Есть у нас функция, которая возвращает одно значение, и мне надо отнять или прибавить к этому значению какую то число, то я делаю вот так
Код
    function foo()
        local x = 150
        return x
    end
    --------------

    bla = foo()-50
а если у нас функция возвращает несколько значений, то вопрос: возможно ли это записать в одну строку, а не так
Код
    function foo2()
        local x,y,w,h = 150,150,500,300
        return x,y,w,h
    end
    
    
    x,y,w,h = foo2()
    x,y,w,h = x-50,y-50,w-100,h-100

а примерно как то так
Код
x,y,w,h = foo2(),-50,-50,-100,-100
спасибо!
Вернуть строку
 
Привет всем!
Подскажите пожалуйста знающие люди, как вернуть из строки точное значение.
Есть такая строка(текст)
И мне надо вернуть значение строки ID, но match варачивает, в данном случае значение FXID, а как вернуть точное значение ID?
Строки могут располагаться в любом порядке.
Код
local x=[[
FXID {88856CCC-783B-4270-B18E-9F80FB9FB319}
IID {14856CCC-783B-4270-B18E-9F80FB9FB319}
ID {1D4F3150-6FC3-42DC-A584-4DC6F925AB7A}
SID {554F3150-6FC3-42DC-A584-4DC6F925AB7A}
]]
Я делаю вот так:
Код
 id = string.match(x, "ID ({.-})");
и получаю
Код
{88856CCC-783B-4270-B18E-9F80FB9FB319}
а надо
Код
{1D4F3150-6FC3-42DC-A584-4DC6F925AB7A}
Спасибо!!!
Редактирование архивов скриптом lua
 
Привет всем!
Подскажите пожалуйста, возможно ли скриптом lua редактировать архивы .rar,.zip и т.д.?
Т.е. есть архив с файлами, и в этом архиве надо отредактировать текстовый документ (имя.txt конечно же известно)
Заранее Спасибо!!!
Одинаковые значения в таблицы lua
 
Ребят, подскажите пожалуйста, не как не могу сообразить, как получить из таблицы наиболее повторяющееся число?

например:
Код
T1 = {25,15,25,35,65,25,84,61,25,97,25}
из этой таблицы надо вытащить значения 25
 
T2 = {15,54,87,15,89,64,15,57,15,96,15}
из этой таблицы надо вытащить значения 15
 
T3 = {23,55,46,23,23,23,55,23,23,47,23}
из этой таблицы надо вытащить значения 23
Таблица в функцию. Lua
 
Цитата
Николай Камынин написал:
Вы сами поняли что написали?У вас в определении функции Restore() нет формальных параметрова в ее вызове Restore(slot_2) появляются
Я то понял, что написал, а вы если помочь не можете, то и не паясничайте!!!
Извините, что в функцию в примере параметр забыл вписать, но вы и так прекрасно все поняли, что я написал, а если не поняли, то так понятней?
Код
function Save (slot)          
    local  t  =  {}
    _G[slot]  =  t
    for  i  = 1 , количества_чего_то  do 
        t[i] = Get_Моя_Функция(которая сохраняется)
    end  
end  

function   Restore (Slot) 
    local  t  =  _G[Slot]
    for  i  =   1 ,  # t  do   
        Set_Моя_Функция_которая_восстанавливает(t[i])
        --t[i]  =   nil   -- если надо очистить 
    end  
end  

  
Код
Save(slot_1)    
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1) 
Таблица в функцию. Lua
 
Решил вот так:
Код
function Save(slot)     
    local t = {}
    _G[slot] = t
    for i = 1, количества_чего_то do
        t[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    local t = _G[Slot]
    for i = 1, #t do  
        Set_Моя_Функция_которая_восстанавливает(t[i])
        t[i] = nil -- если надо очистить
    end 
end 
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код 
Restore(slot_1)
Таблица в функцию. Lua
 
Цитата
BlackBoar написал:
У таблицы обьявленой внутри функции областью видимости (по определению) будет эта самая функция.
Почему? Я же не локально ее объявил
Цитата
BlackBoar написал:
Непонятно какого эффекта вы добиваетесь, вам нужны временные обьекты, вам надо эти таблицы возвращать из функции, еще что-то?Функция например может работать с обьектами обьявленными один раз где-то в начале модуля, как вариант.
Нет возвращать мне не надо,
У меня две функции плана Сохранить, восстановить, одна функция запоминает информацию в таблицу, а вторая восстанавливает из таблицы эту информацию

Код
function Save()     
    Table = {}
    for i = 1, количества_чего_то do
        Table[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    for i = 1, #Table do  
        Set_Моя_Функция_которая_восстанавливает(Table[i])
    end 
end


И в процессе работы скрипта сохранений восстановлений может быть целая куча, и я хочу что бы в скобочках объявляемой функции просто прописывался слот и всё
Примерно как то так:
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код
Restore(slot_1)
Сейчас у меня это работает вот так для незапутанного сохранения
Код
function Save()     
    Table = {}
    for i = 1, количества_чего_то do
        Table[i] = Get_Моя_Функция(которая сохраняется)
    end 
end 

function Restore() 
    for i = 1, #Table do  
        Set_Моя_Функция_которая_восстанавливает(Table[i])
        Table[i] = nil -- если надо очистить
    end 
end 
Код
Save()
 код   
Restore() 
 код
Save()   
 код
Restore()
А вот так для запутанного
Код
slot_1 = {}
Save(slot_1)   
 код
slot_2 = {}
Save(slot_2) 
   код
Restore(slot_2)
   код
slot_3 = {}
Save(slot_3) 
   код
Restore(slot_3) 
   код
Restore(slot_1)
И я хочу это превратить в это
Код
Save(slot_1) 
   код
Save(slot_2) 
   код
Restore(slot_2)
   код
Save(slot_3) 
   код
Restore(slot_3) 
   код Restore(slot_1)
Таблица в функцию. Lua
 
Всем Привет!
Подскажите пожалуйста возможно ли как то, вот такое реализовать, и если возможно то как ?
Есть функция, внутри которой заполняется таблица
И возможно ли как то сделать, что бы не писать несколько функций, менять таблицы в функции
Например что бы это выглядело примерно как то так.
Код
function Bla(Table) 
    Table = {} 
    for i = 1, 10 do
        Table[i] = #Table + 1
    end 
end 
Bla(Table_1) 
Bla(Table_2) 
Bla(Table_3) 
Конечно можно сделать вот так
Код
function Bla(Table) 
    for i = 1, 10 do
        Table[i] = #Table + 1
    end 
end 

Table_1 = {}
Bla(Table_1) 

Table_2 = {}
Bla(Table_2) 

Table_3 = {}
Bla(Table_3) 

Но хотелось бы что бы все манипуляции по объявлению таблиц происходили внутри функции и не приходилось каждый раз объявлять таблицу, перед вызовом функции
Работа со строками LUA
 
Here it is not necessary to remove[it should be removed]this is also not necessary to remove(it should be removed)

на выходе надо получить вот такие строки
Код
Here it is not necessary to removethis is also not necessary to remove  
 Here it is not necessary to removethis is also not necessary to remove

В скобках может быть что угодно
Работа со строками LUA
 
Привет!
Ребят, подскажите пожалуйста, кто знает, как удалить часть строки
то есть: есть строка и в ней есть часть в квадратных скобках и/или в круглых скобках и надо удалить то что в скобках и скобки тоже
Код
Here it is not necessary to remove[it should be removed]this is also not necessary to remove   
Here it is not necessary to remove[it should be removed]this is also not necessary to remove
Поиск файла по имени (LUA)
 
Подскажите пожалуйста!
Возможно ли скриптом lua найти файл на компьютере.
то есть:
Известно имя и расширение файла, но неизвестен путь,
возможно ли при помощи "LUA" как то просканировать диск "С" и получить путь этого файла ???
Вопросы по LUA
 
Цитата
Sergey Gorokhov написал:
какие кавычки? selT[1] не выводит никаких кавычек
Выводит,
Просто в таких случаях они не отображаются в консоле, но на самом деле они есть
вот скриншоты,через консоль проверяешь их(кавычек) нет,а в программе на самом деле есть
скриншот из программы:  
скриншот из консоли:  
скриншот из консоли нотепад++:  
Цитата
Sergey Gorokhov написал:
function toboolean(value)
Спасибо огромное
Вопросы по LUA
 
Еще вопрос:Подскажите как убрать ковычки.
Загоняем строку  selX  в таблицу


Код
selX = "&true&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false&false"
    selT = {}
    for S in string.gmatch (selX, "[^&]+") do
        if not tonumber(t)then t = 0 end t = t + 1 
        selT[t]=S
    end

на выходе получаем вот такую таблицу со строками
вопрос:как превратить строки в таблице в boolean (логический)
Код
selT.1      "true"
selT.2      "false"
selT.3      "false"
selT.4      "false"
selT.5      "false"
selT.6      "false"
selT.7      "false"
selT.8      "false"
selT.9      "false"
selT.10      "false"
selT.11      "false"
selT.12      "false"
selT.13      "false"
selT.14      "false"
selT.15      "false"
selT.16      "false"
selT.17      "false"
selT.18      "false"
selT.19      "false"
selT.20      "false"
selT.21      "false"
selT.22      "false"
selT.23      "false"
selT.24      "false"
selT.25      "false"
selT.26      "false"
selT.27      "false"
selT.28      "false"
selT.29      "false"
selT.30      "false"
selT.31      "false"
selT.32      "false"
selT.33      "false"

а надо вот так
Код
selT.1      true
selT.2      false
selT.3      false
selT.4      false
selT.5      false
selT.6      false
selT.7      false
selT.8      false
selT.9      false
Вопросы по LUA
 
Цитата
Игорь Б написал:
Последний AND - лишний.
Спасибо большое!
Что то я вообще туплю, тут и один SaveRest == 1 тоже лишний,Сейчас на свой вопрос посмотрел,аж самому смешно стало,а до этого что то сообразить не мог
Спасибо еще раз большое!
Вопросы по LUA
 
Привет Всем!
Скажите пожалуйста как правильно написать условие
Пишу разными условиями все работает,а если все в одном условии то выдает ошибку  "unexpected symbol near '='/неожиданный символ рядом с '='"
Что я неправильно делаю,как прописать одним условием?
Код
не работает
if SaveRest == 1 and SaveRest == 1 then  selT = {} and timT = {} end

работает
if SaveRest == 1 then selT = {} end
if SaveRest == 1 then timT = {} end

функции в функцию
 
Цитата
Suntor написал:
Ну так как вы написали, только скобки у ф-ций в аргументах уберите, и будет работать.

Так а что прописать в самой функции?
Код
function main(fun_1, fun_2)
    if something then
        fun_1()--вот здесь что прописать? если прописано fun_1() , то получим ошибку:   attempt to call a nil value (local 'fun_1')
    else
        --fun_2(????????) -- ну и здесь
    end
end
функции в функцию
 
Привет всем!
Скажите пожалуйста, возможно ли в lua как то организовать вот такое?
Есть у нас в коде много функций
Код
    function One()
        bla
    end
    ---
    function Two()
        bla
    end
    ---
    function Three()
        bla
    end
    ---
    function Four()
        bla
    end
    ---
    function Five()
        bla
    end
    ---
    function Six()
        bla
    end
    ---
    function Seven()
        bla
    end
    ---

далее есть основная функция, здесь я пример  очень коротко изобразил,но думаю смысл понятен,где стоят вопросы-туда надо вставлять определенные функции
И вот вопрос: возможно ли это реализовать как то с одной функцией
Код
    function main(fun_1(???),fun_2(???))
        if something then
            --fun_1(????????) 
        else
            --fun_2(????????)
        end
    end
 

 Что бы это выглядело примерно так  
Код
   
    if     bla_1 then
        main(One(),Two())
    elseif bla_2 then
        main(Three(),Four())
    elseif bla_3 then
        main(Five(),Four())
    elseif bla_4 then
        main(Six(),Seven())
    elseif bla_5 then
        main(Seven(),One())
    end


Думаю объяснил понятно
Как сократить условие if 'string' then print() end
 
vgi, Спасибо большое.
Как сократить условие if 'string' then print() end
 
Спасибо большое!
То что нужно.
Как сократить условие if 'string' then print() end
 
Всем привет!
Подскажите пожалуйста
Можно ли в lua как то сокращать условие

Например есть у нас такое условие
Пример:
Код
Name = 'Marina'
if Name == "Marina" or Name == "Lena" or Name == "Igor" or Name == "Sveta" or Name == "Dima" then
    print(Name)
end

А можно ли как то сократить, что бы это звучало примерно как то так
Пример:
Код
if Name == "Marina" or "Lena" or "Igor" or "Sveta" or "Dima" then
    print(Name)
end
function
 
Цитата
Suntor написал:
Ну а в параметры вынести эти самые значения что мешает?
функция достаточно большая и перечислять надо очень много проще функцию продублировать и знаки поменять

короче понятно что так делать нельзя
function
 
Цитата
Sergey Gorokhov написал:
Функция main должна быть только одна

Функция main: Это я так, для примера написал

Есть у меня Функция
function bla()
она находит и перемещяет  много предметов в перед ,то есть работает в плюс (функция достаточно большая)

далее в скрипте происходит кое что еще

И затем мне надо все переместить обратно,но не на тоже место , то есть эта же функция - только в минус
function
 
Подскажите пожалуйста  возможно ли в lua сделать так
Не знаю как правильно сформулировать вопрос :)
function main(и тут мы пишем что нам нужно)
С переменными и цифрами все понятно
Код
function main(bla)
   q = bla
   b = 5
   d = 10
   print(q+b+d)
end
main(5)
--20

А вот со знаками плюс,минус,умножить,разделить не понятно
Например у меня есть  две абсолютно одинаковые функции ,только в одной должны стаять все плюсы,а в другой все минусы
возможно ли обойтись одной функцией,не дублируя вторую
Код
function main(?)
   print(5+10+20)
end

function main(?)
   print(5-10-20)
end

function main(?)
   print(5-10+20)
end

main(?)
условия
 
Скажите пожалуйста можно ли как то сократить условия, а то порой слишком длинные получаются ,
в документации ничего подобного не нашёл

например:

Код
b=10
c=10,123456789
 
if b == c or b == c-0.123456789 or b == c+0.123456789 then 
   print(bla)
end


а можно ли сократить что бы условие звучало примерно так
Код
 если  b == c  или  b больше или меньше с на 0.123456789 то принт() конец
  
Удаление переменных
 
Цитата
Suntor написал:
Если это глобальные переменные и они не были объявлены заранее до указанного блока кода, то можно.

Да, до указанного блока они  не были объявлены

Цитата
Suntor написал:
Сохранив содержимое глобальной таблицы _G в отдельную переменную перед блоком

А можно небольшой пример!?
Удаление переменных
 
Цитата
Suntor написал:
локальные переменные можно сбросить такой вот глобальной функцией:
Спасибо огромное !
----------------------------
А если не локальные,то можно как нибудь сбросить?
например: есть цикл, в нем много переменных ,но какие то переменные я забыл объявить локальными и на выходе мне надо их сбросить

Небольшой пример
Код
for i = 1,100 do
     
   local a = 5 
         b = 10
    local c = 10 + a
         d = 10 + b
   local e = 10 + c
         f = a + e
        g = f + a
   local h = b * 4     
    
    print(i..')'..'\n',a,b,c,d,e,f,g,h)
   
   if i == 10 then break end
end
print('И здесь надо что бы все переменные стали nil') 
Удаление переменных
 
Возможно ли в lua удалить все переменные ,
что бы они в какой то момент все стали nil
что бы не прописывать их все вручную
Сканирование папки при помощи Lua.
 
Цитата
Suntor написал:
Если нужно чтобы всё в итоге линейно в одну таблицу путями попало, то просто добавить ключ /s к команде dir.
Да, то что нужно ,Спасибо большое!!!

Цитата
Suntor написал:
А если нужно чтобы создалась структура папок, их подпапок и файлов с именами вложенными таблица в таблицу повторяющими вложение подпапок и файлов в папки, то надо будет писать рекурсивную ф-цию, в которой вставить дважды код из примера с ключами dir отдельно для папок и отдельно для файлов, сохраняя в разные таблицы, и по таблице папок потом рекурсивно вызывать саму ф-цию...
Вот тут не совсем понятно,("хоть это и не требуется сейчас, но интересно для изучения , на будущее"),а как определить где папка ,где файл и как зайти в подпапку?
Сканирование папки при помощи Lua.
 
Suntor,Спасибо большое !!!
Еще вопросик такой ,эта  сканирует одну указанную папку и отдает имена,а как сделать "не могу сообразить " что бы  подпапки тоже сканировались
Сканирование папки при помощи Lua.
 
Привет Всем!
Подскажите пожалуйста как с помощью lua просканировать папку в windows  "например: C:\Users\User\Documents"  
и получить на выходе список всех имен от файлов которые там находятся.
Табуляция Notepad
 
Подскажите пожалуйста плагин для табуляции кода lua в notepad++, не как не могу найти   (x64)
консоль в редакторе атом (lua)
 
Всем привет!
Друзья подскажите пожалуйста как настроить редактор Atom для работы с lua.
Как в нем открыть консоль и что бы в неё выводились значения,
примерно как в этом видео
Получить разрешение монитора - Lua
 
Здравствуйте!
Подскажите пожалуйста:
Как при помощи LUA получить разрешения монитора (рабочего стола)
height , width = в пикселях

Спасибо!!!
Страницы: 1
Наверх