String.format и gsub в Lua

function string:split(sep)    
 local sep, fields = sep or ":", {}   
local pattern = string.format("([^%s]+)", sep)    
 self:gsub(pattern,function (c)fields[#fields + 1] = c end)
 print(c)
return fields
   end

У меня есть блок кода выше.

  1. Функция string.format имеет разделитель в качестве второго аргумента. Это почему? Обычно у нас есть текст в качестве второго аргумента, который необходимо отформатировать.

  2. gsub обычно заменяют заданный шаблон. какова его роль function(c) в gsub? Как это называется и используется здесь? Откуда c в function(c) ?


person S Khurana    schedule 08.04.2014    source источник


Ответы (1)


  1. В примере кода спецификатором формата string.format() является "([^%s]+)", в котором %s ожидает строку, поэтому второй аргумент sep является строкой.

    Например, если sep имеет значение ",", то pattern становится ([^,]+) (одно или несколько вхождений незапятых), что означает, что функция string:split разбивает строки запятыми (,)

  2. string.gsub() может принимать в качестве второго аргумента три типа: строку, функцию или таблицу. Когда это функция, она вызывается каждый раз, когда происходит совпадение, при этом все захваченные подстроки передаются в качестве аргументов по порядку. Дополнительные сведения см. в разделе string.gsub().

person Yu Hao    schedule 08.04.2014