Lua 関数のサンプル

目次

関数のサンプル

function sayTest()
  print("hello world")
end
sayTest()  --hello world

1~3行目は、関数です。
4行目は、関数を実行します。

 

関数のサンプル(引数あり)

function calc(num1,num2)
  print(num1 + num2)
end
calc(1,2)  --3

任意の引数を指定できます。

 

関数のサンプル(戻り値あり)

function calc(num1,num2)
  return(num1 + num2)
end
print(calc(2,3))  --5

戻り値を返せます。

 

関数のサンプル(複数の戻り値あり)

function calc(num1,num2)
  local ans1 = num1 + num2
  local ans2 = num1 - num2
  return ans1,ans2
end
local a,b = calc(5,4)
print(a,b)   --9 1

複数の戻り値も返せます。

 

無名関数

a = function(num1,num2)
  return num1 + num2
end
print(a(5,4))   --9

関数名がない関数です。

 

関数の引数が可変長引数

function test1(...)
  for _, value in ipairs({...}) do
    print(value)
  end
end
test1(1, 3, 5, 7)  -- 1, 3, 5, 7

可変長引数は「...」を使用します。

 

関数の引数に関数を指定

function calc1(func1,num1)
  return func1(num1)
end
func1 = function(num1)
  return num1 * 2
end

print(calc1(func1,6))  --12

関数の引数に関数を指定できます。

 

関数の戻り値が関数

function calc1(num1)
  return function(x) return x + num1 end
end

local ans = calc1(3)
print(ans(2))  --5

関数の戻り値に関数を指定できます。

 

再帰関数

function calc1(num1)
  if num1 < 1 then
    return
  else
    print(num1)
    num1 = num1 - 1
    return calc1(num1)
  end
end

print(calc1(3))  --3 2 1

再帰関数は、自身の関数を呼び出します。
ループを抜ける条件を満たすことよって処理を終了します。
条件を間違えると無限ループになってしまうので注意が必要です。

関連の記事

Lua if文のサンプル

△上に戻る