luaのきほん

 mysql-proxy のスクリプトlua という言語で記述します。クライアントとmysqlサーバの通信の間に割りこんで色々なことができそうですが、まずは基本的な書き方をおさえてみました。 lua スクリプトの基本事項を、サンプルスクリプト等を見ながら「こんな感じかな?」的に勝手に理解したもので、まずは「それっぽく書けるようになればOK」的な姿勢で以下メモ。


コメント:

コメント(1行) --
コメント(複数行)

    • [[


]]--


基本的な関数ブロック:

function 関数名( パラメタ )
・・・・
return xx
end

パラメタに型はない、というか少なくとも明示はしない模様。


プライベート(ローカル)な関数:

local function 関数名( パラメタ )
・・・・
return xx
end


配列:

local myarray = { "AAA", "BBB", "CCC", "DDD" }
print("3rd is " .. myarray[2])


条件分岐(if):

if AAA == BBB then
・・・
elseif CCC >= XX then
・・・
else
・・・
end


繰り返し(for):

for i = 1, string.len(s) do
・・・
end


文字列加工とか

  文字列長: string.len(s) または  s:len() 
  小文字化: string.lower(s) または s:lower()
  大文字化: string.upper(s) または s:upper()
  逆順化 : string.reverse(s) または s:reverse()
  部分抽出: string.sub(s, start[, end]) または s:sub(start[, end])
             start文字目から end文字目までを抽出(文字数ではない)
             start,end が負の場合はおしりからの文字数位置。
  繰り返し: string.rep(s, n) または s:rep(n)
             文字列sをn回繰り返す。
  部分置換: string.gsub(s, patt, repl[, n]) または s;gsub(patt, repl[, n])
             s中のpatt部分文字列をreplに置換する。nが指定された場合は先頭からn回ぶんだけ。
  文字列整形: string.format(fmstr, prm1, pr2...)  または  fmstr.format(prm1, prm2...)
             printf みたいな感じ。
  
  その他:string.match(s, patt[, init])
          string.gmatch(s, patt)
          string.find(s, patt[, init[, plain]])
          string.dump(function)
          string.char(i1, i2...)
          string.byte(s,[ i[, j]])