3.関数

呼び出し

関数内をみると、local w=bs_width()と初期化されています。これは、APIを呼び出しています。 呼び出しは、関数名()と書きます。APIも関数なのですが、予め用意されているので、わざわざ定義する必要はありません。 しかし、パラメータなど使うのであれば、自分で定義する必要があります。

function param1()
    return 
end

このように定義するのですが、もし定義せずにいきなり呼び出したら、何も起きないか、エラーになるでしょう。 なので、呼び出す前に必ず定義するようにしましょう。呼び出す例は、以下の通りです。

-- 先に定義

function call()
    return
end

-- 呼び出し

call()

値の受け渡し

関数を使うのであれば、値を受け渡しすることがあります。 function main(x, y, p)x, y, pは、引数(ひきすう)といわれるもので、一時的な橋渡しをする変数のようなものでしょうか。 次の行では、引数を参照して計算しています。 xyはカーソル座標が渡されているので、式中にlastX-x, lastY-yとそのまま書けば取得できるわけです。

local distance=bs_distance(lastX-x, lastY-y)

ちなみに、複数の引数を渡すのであれば、コンマで区切ります。

代入

Luaでは、関数も変数データの値となるようです。なので、このように書いてもエラーになりません。

a=function ()
    return
end

しかも、下のような関数定義と同じことになります。

function a()
  return
end

もし、一時的に使う関数を定義したいのなら、このように書けばいいのです。

local a=function ()
    return
end

-- もしくは、

local function a()
    return
end

返す

返しは、returnのあとに式を書きます。何度も同じ計算するときなど、関数定義します。そのときに、このように返します。

function a(b)
    return b+1
end

c=a(10) -- 答えは11
c=a(c) -- 答えは12

関数はデータの値なので、このようにも返せます。

function a(b)
    return function ()
        return b
    end
end

私は、パラメータの定義を短く書きたいときにこうしているんですが、どうなんでしょうかね。 パラメータの値を予め細工したいときは、普通に定義するべきでしょうね。

Back to Index