Ответы пользователя по тегу Lua
  • Как разделить текст строку?

    @16tomatotonns
    Томат
    Ну например вот так:
    local function split_by_lines(str, limit)
      local lines = {} -- результат
    	local line = ""  -- текущая временная строка
    
    	-- проходим по словам
    	for word in (str .. " "):gmatch("(.-) ") do
    
    	  if #line + #word < limit then
    		  line = line .. " " .. word
    		else
    		  table.insert(lines, line)
    			line = word
    		end
    		
    		-- чистим начальные и замыкающие пробелы, 
    		-- чтобы не было мусора
    		line = line:match("^%s*(.-)%s*$")
    	end
    	
    	-- догоняем хвост
    	table.insert(lines, line:match("^%s*(.-)%s*$"))
    	return lines
    end
    
    
    local text = "This is the long long text that should be splitted by lines"
    local result = split_by_lines(text, 15)
    print( table.concat(result, "\n") )
    
    > This is the
    > long long text
    > that should be
    > splitted by
    > lines
    Ответ написан
    Комментировать
  • Как понять входит ли точка в квадрат?

    @16tomatotonns
    Томат
    function aabbPoint(x, y, rx, ry, rw, rh)
      return x >= rx and x <= rx + rw and y >= ry and y <= ry + rh
    end
    Ответ написан
    Комментировать
  • Как вызвать main поток из созданного потока lua lanes?

    @16tomatotonns
    Томат
    Несмотря на кажущуюся простоту, lua lanes, в момент спавна потока, создаёт копию исполняемой функции этого потока (с копией всех замыканий), передаёт её новому lua_State и отправляет на исполнение.
    В данной модели, всё общение должно происходить системой сообщений: дочерний поток посылает сообщения основному, основной считывает и реагирует. Прямой обратной связи через функции не существует, подобные вещи должны быть налажены на уровне самого языка а не сторонних библиотек.

    Типовая схема работы с lua lanes - менеджер потоков, который закидывает им задачи и считывает ответы.
    Ответ написан
    Комментировать