1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaにおける関数の基本的な使い方をご紹介します。

2022-02-10 11:30:46

コピーコード コードは以下の通りです。
function fib(n)
  if n < 2 then return 1 end
  return fib(n - 2) + fib(n - 1)
end

コピーコード コードは以下の通りです。
-- Closures and anonymous functions are supported.
function adder(x)
  -- When adder is called, the function used to return is created, and the value of the variable x can be remembered:.
  return function (y) return x + y end
end
a1 = adder(9)
a2 = adder(36)
print(a1(16)) --> 25
print(a2(64)) --> 100

コピーコード コードは以下の通りです。
-- Return values, function calls, and assignments can all use lists of unmatched length.
-- mismatched receivers are assigned nil.
-- mismatched senders are ignored.

x, y, z = 1, 2, 3, 4
-- Now x = 1, y = 2, z = 3, and 4 will be discarded.

コピーコード コードは以下の通りです。
function bar(a, b, c)
  print(a, b, c)
  return 4, 8, 15, 16, 23, 42
end

x, y = bar('zaphod') --> prints "zaphod nil nil"
-- Now x = 4, y = 8, and the values 15..42 are discarded.

コピーコード コードは以下の通りです。
-- Functions are first-class citizens and can be local or global.
-- The following are equivalent.
function f(x) return x * x end
f = function (x) return x * x end

コピーコード コードは以下の通りです。
-- These are also equivalent to.
local function g(x) return math.sin(x) end
local g; g = function (x) return math.sin(x) end
-- 'local g' can support g self-reference.

コピーコード コードは以下の通りです。
-- By the way, trigonometric functions are in radians.

コピーコード コードは以下の通りです。
-- Call the function with a string argument, without parentheses:.
print 'hello' -- works.