Функция с тремя параметрами

James Hawk

Известный
Автор темы
919
218
Lua:
sampRegisterChatCommand("command", function(arg)
        -- code
        p1, p2, p3 = string.match(arg, "(%d+) (%s+) (%d+)")
        sampAddChatMessage("p1 "..tonumber(p1)..", p2 "..p2..",p3 "..tonumber(p3),-1)
        return {arg}
end)
Lua:
[01:44:43.427763] (error)  .. attempt to concatenate a nil value
Ввожу три параметра (number string number) через пробел. В чём моя ошибка?
 

CatKnight

Известный
148
55
Lua:
sampRegisterChatCommand("command", function(arg)
        -- code
        p1, p2, p3 = string.match(arg, "(%d+) (%s+) (%d+)")
        sampAddChatMessage("p1 "..tonumber(p1)..", p2 "..p2..",p3 "..tonumber(p3),-1)
        return {arg}
end)
Lua:
[01:44:43.427763] (error)  .. attempt to concatenate a nil value
Ввожу три параметра (number string number) через пробел. В чём моя ошибка?
Изначальная задумка ошибка.
1) %s - это пробел, а не строка. Для строк используется (.-) и его аналоги.
2) Если тебе нужна строка символов без пробелов, то можно использовать %S+
3) Если тебе нужна именно строка, с пробелами и тд, то разумнее было бы сначала найти два числа, а потом уже остаток от строки. Примерно такой шаблон.
Lua:
p1, p2, p3 = string.match(arg, "^(%d+) (%d+) (.-)$")
 

James Hawk

Известный
Автор темы
919
218
1) %s - это пробел, а не строка. Для строк используется (.-) и его аналоги.
2) Если тебе нужна строка символов без пробелов, то можно использовать %S+
Вот за это спасибo
 
Последнее редактирование: