lua置き場

luaの実験的断片的なメモ。主に正規表現絡み。

正規表現"%b{}"

lua固有の拡張らしい。独自テンプレート型置換に使える。

function template(temp,dict)
  local s = string(temp)
  return s:gsub("%b{}",function(x)
    -- s="hoge {a}" x="{a}" k="a"
    local k = x:sub(2,-2)
    return dict[k] or x
  end)
end

テーブル{}

配列も連想配列もクラスもこのtableひとつ。

配列なら開始が"1"。

連想配列のキーがなければnil。

"obj.method(self)"のself暗黙表記"obj:method()"があるらしい。

ux={c=7;w=72;tabs={}}

function ux:tab(k,v)
  return {title=k;msg=v or k}
end

function ux:mod(i,k,v)
  p=self.tabs
  -- 大小評価をmathで済ます
  x=math.min(#p,i)
  if x~=0 then
    t=self:tab(k,v)
    -- 念のため
    if x==i then
      p[x]=t
    else
      table.insert(p,t)
    end
  end
end

function ux:del(i)
  p=self.tabs
  x=math.min(#p,i)
  if x~=0 and x==i then
    table.remove(p,x)
  end
end