Ошибка: неверный аргумент №1 для 'strfind' (ожидаемая строка, получил ноль) в Lua - PullRequest
1 голос
/ 12 октября 2019

Это код:

local function scanwhite (str, pos)
  while true do
    pos = strfind (str, "%S", pos)
    if not pos then return nil end
    local sub2 = strsub (str, pos, pos + 1)
    if sub2 == "\239\187" and strsub (str, pos + 2, pos + 2) == "\191" then
      -- UTF-8 Byte Order Mark
      pos = pos + 3
    elseif sub2 == "//" then
      pos = strfind (str, "[\n\r]", pos + 2)
      if not pos then return nil end
    elseif sub2 == "/*" then
      pos = strfind (str, "*/", pos + 2)
      if not pos then return nil end
      pos = pos + 2
    else
      return pos
    end
  end
end

Я не опытный "сценарист", поэтому я не могу понять, как это решить.

1 Ответ

0 голосов
/ 13 октября 2019

Нижняя строка спереди:

  • Проблема: 'str' в scanwhite (str, pos) равен nil
  • Почему?
    • Возможно, вы написали scanwhite () вместо scanwhite («что-то здесь»)
    • Возможно, вы передали пустую переменную вместо переменной, содержащей строку

Подробный ответ

Из руководства lua 2.4:

strfind (str, substr, [init, [end]])
  • Квадратные скобки означают необязательные, а внешние квадратные скобки обязательны.
  • Ваше сообщение об ошибке гласит "ожидается строка, получено ноль" , поэтому обязательное было пустым
  • В вашем коде substr явно не пусто (это "% S")
  • По вычету str равнялся нулю

Решение:

local myString = "This is a string"
scanwhite(mystring)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...