やーまんぶろぐ

気が向いた時にだけ書くブログ

【ドットインストール】Lua入門

前回、久しぶりにLuaを触りました。
yamano3201.hatenablog.jp

ドットインストールを使って復習してみたのでメモしておきます。
http://dotinstall.com/lessons/basic_luadotinstall.com

luaメモ

文字列

-- 文字列の連結は.. を使う
s = "hello" .. "world"
print(s)

テーブル

--[[
テーブル(配列/ハッシュ)
配列のテーブル
要素の順番は1から始まるので注意
]]
a = {23, 234, "hello"}
print(a[1])

-- #aで要素の個数を返す
print(#a)

-- ハッシュのテーブル
user = {name = "yamano", score = "30"}
print(user["name"])
print(user.score)

条件分岐

--ifとelseifの行末にはthenが必要
score = 80

if score > 60 then
  print("OK")
elseif score > 40 then
  print("soso..")
else
  print("ng!")
end

ループ

-- repeat until
i = 0
repeat
  print(i)
  i = i + 1
until i >= 10

-- 配列のfor
for i, value in ipairs(a) do
  print(i, value)
end

-- ハッシュのfor
for key, value in pairs(user) do
  print(key, value)
end

関数

-- function
function greet(name)
  print("hello! "..name)
end

greet("Tom")

-- 可変引数
function sum(...)
  local a = {...}
  local total = 0
  for i = 1, #a do
    total = total + a[i]
  end
  return total
end

print(sum(2, 4, 6, 8))

数値に関する関数

-- 便利な関数
x = math.max(2, 222, 14)
print(x)

-- 0以上1未満のランダム値
y = math.random()
print(y)

-- n1からn2までの整数値のランダム値

z = math.random(10, 20)
print(z)

文字列に関する関数

-- 文字数をカウント
num = #"dotinstall"
print(num)

-- 文字列の変換
sub = string.gsub("dotinstall", "dot", ".")
print(sub)

-- string.format
-- %dの前に数字を書くと桁数を指定できる。0から始めると0で埋めてくれる
-- %fの前の数字で小数点以下の桁数を指定できる
s1 = 10
s2 = 20.23456
s3 = "yamano"

s_format = string.format("name: %s, x:%010d, y:%.2f", s3, s1, s2)
print(s_format)

テーブルに関する関数

-- テーブルの関数
nums = {2, 25, 42, 1}
table.sort(nums)

-- 配列テープルに要素の追加と削除
table.insert(nums, "ラス前")
table.insert(nums, "last")
table.remove(nums)

for i, num in ipairs(nums) do
  print(num)
end

日付、時刻に関する関数

-- 基準日からの秒数
time = os.time()
print(time)

-- フォーマット指定の日付
date = os.date("%Y-%m-%d")
print(date)

最後に

久しぶりに触ると、細かい文法は何も覚えてないですね。。
テーブルの概念もすっかり忘れていました。

もう少しLuaは触ると思います。
気が向いたら、また書きます。