Перейти к контенту

Язык Lua. Общие вопросы программирования


Malandrinus

Рекомендуемые сообщения

"return" без аргумента возвращает 0 значений. "return nil" возвращает одно значение, равное nil.

Трактовка возвращаемого значения зависит от конкретного контекста. Пусть будет, например, выше упомянутый type.

print(pcall(type,loadstring"return nil"())) --> true nil
print(pcall(type,loadstring"return"())) --> false bad argument #1 to '?' (value expected)

do
local _type = type
type = function(arg) return arg and _type(arg) or "nil" end
end

print(pcall(type,loadstring"return"())) --> true nil
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

При работе с таблицей следует придерживаться одного из двух стилей:

- только как с обычным массивом, используя table.insert\remove и т.д.

- только как с ассоциативным массивом, используя оператор индексации.

Смешивать их не стоит. В SciTE с Lua 5.1 проблемы нет. А современный Lua - версии 5.3 - ругается на вставку элемента  с помощью table.insert за пределы границ - bad argument #2 to 'insert' (position out of bounds).

Поделиться этим сообщением


Ссылка на сообщение


for sgn, fn, args in s:gmatch("([%+%-])([%w_]+)%s*%(?([^%)%+%-]*)") do

print(sgn, fn, args)

end

 

Изменено пользователем Charsi

Поделиться этим сообщением


Ссылка на сообщение

Можно написать свой итератор, который создает массив ключей, упорядочивает его нужным образом и выдает при вызове ключ из этого массива и его значение.

local t = {["A"] = "a", ["B"] = "b", ["C"] = "c", ["D"] = "d"}

function asc_iter(t)
	local pos = 0
	local keys = {}
	for k in pairs(t) do table.insert(keys, k) end
	table.sort(keys)

	return function()
		pos = pos + 1
		return keys[pos], t[keys[pos]]
	end
end

for k, v in asc_iter(t) do
	print(k, v)
end

 

 

Изменено пользователем Charsi
  • Нравится 1
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Сортировка как раз и устанавливает порядок доступа. В хеш-массиве никакой упорядоченности быть не может. Если ключ это объект или таблица, то в table.sort вторым аргументом можно передать функцию, реализующую упорядочивание таких ключей.

Поделиться этим сообщением


Ссылка на сообщение

@Graff46, не совсем ясно - тебе нужно 4 символа непосредственно после первого вхождения заданной подстроки:

local file = io.open(path)
if file then
	result = file:read("*a"):match("substring(....)")
	file:close()
else
	print("can't read file: "..path)
end 

или первые 4 символа из строки, следующей за найденной. Во втором случае шаблон в match будет "substring.-\n(....)". Если искомая подстрока содержит магические символы, то их следует экранировать символом %.

 

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...