Luaの関数

関数の定義、戻り値、変数への関数代入、基本ライブラリ関数を学ぶ。

関数は再利用可能な処理をまとめる。print()io.read() も標準ライブラリの関数である。

関数を定義する

function 関数名(引数)
  処理
end
function sum(x, y)
  return x + y
end

print(sum(10, 20))

引数は値として渡される。引数を再代入しても、呼び出し元の変数は再代入されない。

戻り値

Luaの関数は複数の値を返せる。

function values()
  return 10, 20
end

hoge, piyo = values()
print(hoge, piyo)

余分な戻り値は破棄され、不足する値には nil が代入される。return 文がない関数は値を返さない。

値としての関数

関数は変数へ代入できる。

function sum(x, y) return x + y end
function mul(x, y) return x * y end

operation = sum
print(operation(10, 20))
operation = mul
print(operation(10, 20))

関数の中で関数を定義し、クロージャーとして返すこともできる。

function createCounter(value)
  return function(amount)
    value = value + amount
    return value
  end
end

counter = createCounter(10)
print(counter(5))

主なライブラリ関数

assert() は最初の引数が偽の場合にエラーを発生させる。

assert(value, "value must be true")

dofile() は別のLuaファイルを実行する。

dofile("call.lua")

type() は値の型を返す。tonumber() は変換可能な値を数値へ変換し、tostring() は値を文字列へ変換する。

print(type(10))
print(tonumber("25"))
print(tostring(25))