@ProLua

Страница 287 из 307
Particle
07.05.2018
11:19:22
я вот сейчас как раз смотрю про сетенв, но чёт не совсем понимаю, как это сделать

постоянно ошибки выдает

догнал, как сделать без энвиронментов - local a = 1 local b = 3 local sign = "+" local res = loadstring("local res ="..tostring(a)..sign..tostring(b).." return res") print(res())

Lucky
07.05.2018
14:06:20
блин, а что сложного сделать local log = math.log

Google
Particle
07.05.2018
14:11:30
я не понимаю, как работать с энвиронмнтами =(

Philipp
07.05.2018
14:18:11
догнал, как сделать без энвиронментов - local a = 1 local b = 3 local sign = "+" local res = loadstring("local res ="..tostring(a)..sign..tostring(b).." return res") print(res())
У меня есть чувство, что ты хочешь сделать одно, а нам ты рассказываешь по 10% от задачи

Lucky
07.05.2018
14:18:50
да ладно, я уже книжкой кинул.

Particle
07.05.2018
14:21:25
=) Я хочу передавать в калькулятор задачу с динамическими переменными и их количеством (что бы разные задачи решал) и получать ответ. к примеру: a + 1 = 1/b +c = 1-(1+c)*d = вот так хочу)

Philipp
07.05.2018
14:22:00
Объявляй их глобальными, костыль – но тебе должно подойти

Particle
07.05.2018
14:22:04
но для loadstring приходится всё ручками прописывать с конкатенацией =/

ну да, не симпатично, но выход. Может найду еще какое решение...

Philipp
07.05.2018
14:23:27
Ну, если это прога – вот чисто для себя без планов на расширение и оптимизаци – то вполне себе рабочее решение

Particle
07.05.2018
14:24:28
я это для игры делаю, т.ч. незнаю, что может понадобиться в будущем. Потому, хочется сразу нормально сделать

Philipp
07.05.2018
14:25:17
Тогда надо думать

По хорошему, в строку передавать стоит только численные значения – конкатенацией

Можешь написать какую-нибудь функцию для этого

Или даже простенький парсер для этого

Google
Philipp
07.05.2018
14:28:04
Что-то вроде eval("a + b + c", a, b, c), где a, b, c – некоторые переменные извне. Ну как-нибудь так, например

Кажется, если я не ошибаюсь, в какую-то из функций load/loadstring можно передавать контекст, можно туда покопать

Particle
07.05.2018
14:32:28
я пока вот так сделел. Этого на данный момент хватает, но хочется расширить и для каждого частного случая надо отдельно дописывать строки. local function supplement(num, sign, round) if sign == "+" then return num + annex elseif sign == "-" then return num - annex elseif sign == "*" then return num * annex - 1 elseif sign == "/" then if round == "<" then return math.floor(num / annex) elseif round == ">" then return math.ceil(num / annex) else return 1 end else return 1 end end Хочется сделать более наглядно, к примеру, таблицу с набором строк - задач, которые будут легко читаться и использовать переменные из локального пространства функции

Philipp
07.05.2018
14:34:31
Для начала, знак можно передавать неявно, в самой строке, по идее

Блин, мне так лень писать. Можно я войс запишу, а? :D

Particle
07.05.2018
14:34:55
=)

Philipp
07.05.2018
14:35:10
Ладно, текстом нагляднее будет

Particle
07.05.2018
14:38:36
хочу найти такой вариант, что бы не хардкодить

Philipp
07.05.2018
14:39:53
Короче. 1) Вот такую вот строчку без проблем можно разбить регуляркой. Вычленит переменные и знак между ними. В целом, в выражении всё то, что не число и не знак – переменная: "a + b" 2) Чтобы избавиться от нагроможденя if/elseif/else в определеннии знака можно использовать таблицу: signs = {} signs['+'] = function(a, b) return a + b end signs['-'] = function(a, b) return a - b end signs['<'] = function(a, b) return math.floor(a/b) end и использовать вот так: signs[sign](num, annex) 3) Переменные придется хранить либо в отдельной табличке, доступной функции eval, требуемые для подсчета и ставить её контекстом для лоадстринга, либо хранить в глобалспейсе

Это вот по минимуму, что пришло в голову сразу. @Snusmumriken подскажет больше насчет переменных из внешнего скоупа

Particle
07.05.2018
14:41:24
Спасибо большое!

Philipp
07.05.2018
14:41:38
Да в целом не за что

Lucky
07.05.2018
15:01:42
Спасибо большое!
Примеры игра будет подкидывать или игрок вводить?

Particle
07.05.2018
15:06:42
Примеры игра будет подкидывать или игрок вводить?
это для тестирования механики игры. Придется часто менять условия для бросков, к примеру: 4d2, 2d6, 3d10/2, 5d3+3, 2d2+10/2... По хорошуму, ищу способ реализации универсальной функции.

Philipp
07.05.2018
15:07:19
У меня есть некоторые сомнения, что Луа хорош в плане механик рандома. Или у тебя игра чисто на Луа?

Lucky
07.05.2018
15:07:54
ему чисто балансировщик нужен.

Particle
07.05.2018
15:08:01
это настолка, просто на луа я протестирую механику.

угу

Philipp
07.05.2018
15:08:17
А, ясно

Particle
07.05.2018
19:38:39
Ребят, а еще подскажите пожалуйста, как мне из этой строки "4d12/2" записать в разные переменные числа и знак "/"? d надо исключить. мучаюсь с gmatch, но чёт никак не выходит.

Google
Particle
07.05.2018
19:42:22
так, стринг match работает

усё, заработало

Кароче, вроде, то что надо выходит =) https://pastebin.com/8aVVyDSF

local task = "4d2<(e/2)+0" local dices, sides, sign1, annex1, sign2, annex2 = string.match(task, "(%d+)d(%d+)(%X+e%X+)(%d+)(%X+)(%d+)") А как тут можно сделать так, что бы при task = "4d2" луа не ругалась?

Sergey
08.05.2018
10:59:02
добрый день можете подсказать как мне можно отправить запрос вида $ curl -LO https://download.cdn.yandex.net/from/yandex.ru/tech/ru/speechkit/cloud/doc/guide/files/speech.wav

https://tech.yandex.ru/speechkit/cloud/doc/guide/concepts/speechkit-cloud-asr-quick-start-docpage/

описания где можно добавить хедер и отправиь файл не нашел

Vadim
08.05.2018
11:04:22
всё бы хорошо, но где связь с Lua? :)

Sergey
08.05.2018
11:04:36
сам скрипт на lua

где надо сделать отправку файла

Vadim
08.05.2018
11:04:48
тогда бери Lua-cURL

у него в документации есть в т.ч. о пост-запросах

Sergey
08.05.2018
11:05:14
есть примеры не могу найти варианты работы с отправокй файла

Vadim
08.05.2018
11:05:28
если что, его мейнтейнеры - я и @moteus

но я сейчас улетаю по делам :)

Sergey
08.05.2018
11:05:43
https://forums.coronalabs.com/topic/28919-posting-a-file-with-httprequest/

нашел вроде пример

Vadim
08.05.2018
11:05:53
и да, примеры есть в документации

http://lua-curl.github.io/#example-3-posting-data

Sergey
08.05.2018
11:07:38
а то что яндекс просит —data binary

Google
Sergey
08.05.2018
11:07:43
это как можно указать

Vadim
08.05.2018
11:09:20
—data-binary <data> (HTTP) This posts data exactly as specified with no extra processing whatsoever.

lua-curl итак делает именно так, насколько я помню

ShadoWalkeR
08.05.2018
11:12:08
и да, примеры есть в документации
Так для этого же НАДО ЧИТАТЬ документацию. Кто это в 2к18 делает то? ?

ShadoWalkeR
08.05.2018
11:13:55
Ну и чтобы гордо говорить "У нас есть документация!"))))

Sergey
08.05.2018
11:37:44
local cURL = require "cURL" c = cURL.easy{ url = "https://asr.yandex.net/asr_xml", post = true, httpheader = { "Content-Type: audio/x-wav"; }; postdata = { — post file from filesystem name = {file="/tmp/79196480605.wav", type="data-binary"}, }; postfields = { '{"uuid":"01ae13cb744628b58fb536d496daa1e6"}', '{"key":"1234566789"}', '{"topic":"queries"}' } } c:perform()



ощибка выполнения скрипта

Насибуллин
08.05.2018
11:42:45
postdata строку чтоли ждет

а, скорее postdata:name

почему у тебя в нейм таблица? странно же)

Sergey
08.05.2018
11:50:58
local cURL = require "cURL" f = io.open("/tmp/79196480605.wav", "w") c = cURL.easy{ url = "https://asr.yandex.net/asr_xml", writefunction = f, post = true, httpheader = { "Content-Type: audio/x-wav"; }; postfields = '{"uuid":"01ae13cb744628b58fb536d496daa1e6","key":"12345678","topic":"queries"}'; } c:perform() f:close() print("Done")

вроде работает

но как мне результат

вывести

XML

Насибуллин
08.05.2018
11:51:40
а там голый хмл или какой-то формат?

что возвращает яндекс?

Google
Sergey
08.05.2018
11:51:50
формат

Насибуллин
08.05.2018
11:51:54
хмл это же просто строка

Sergey
08.05.2018
11:52:01
мне бы просто посмтреть что щас вернуло

Насибуллин
08.05.2018
11:52:07
если хочешь с тегами вывести то просто io.print

или как там в луа

просто напечатай

Sergey
08.05.2018
11:52:26
io.print(c)

так

?

Насибуллин
08.05.2018
11:52:31
наверн

я на луа не писал

ShadoWalkeR
08.05.2018
11:53:17
я на луа не писал
"А казачок то засланный" (с) ?

Sergey
08.05.2018
11:55:09
"А казачок то засланный" (с) ?
подскажете тогда как ответ вывести

ShadoWalkeR
08.05.2018
11:56:09
Выкинуть io и поставить filesystem. Я пробовал через io работать - это дохлый номер - неработоспособно

Sergey
08.05.2018
12:02:37
как тогда правильно

Страница 287 из 307