int lua_isstring (lua_State *L, int index);
Эта функция возвращает 1, если значение в заданном приемлемом индексе строка или число (которое всегда конвертируются в строку), и 0 иначе , (Source)lua_isstring() проверить для реальных строк в Lua
Есть (более элегантный) способ действительно доказательство, если данная строка действительно является строкой и не числа в Lua? Эта функция не имеет для меня никакого смысла!
Моя первая идея состоит в том, чтобы дополнительно изучить строку длины с
`if(string.len(String) > 1) {/* this must be a string */}`
... но это не чувствовать себя так хорошо.
Вы кодируете в Lua или C (например, используя Lua API)? Почему, по-вашему, эти функции не имеют никакого смысла? Как вы думаете, почему 'string.len (String) <= 1' может работать? –
Lua и C++. Это не имеет смысла, потому что он вернет 1, если проверенная строка в Lua фактически равна 4 или любому другому номеру. 'string.len (...' может помочь, потому что реальная строка обычно длиннее 1 или 2 символов. – user1511417
'if (lua_type (L, index) == LUA_TSTRING) ...'. Lua преобразует числа в строки и числовые строки для чисел для удобства, поэтому 'lua_isstring()' (и 'lua_isnumber()') необходимо, если вы хотите сделать то же самое в своем собственном API. – siffiejoe