こんにちは、ロブスタのハルです!
前回の講座ではいくつかの処理をまとめる役割としての関数について説明しました。
今回は入力と出力のある関数について解説します。
前回の講座を見ていない方はこちらからご覧ください。
入力→処理→出力をまとめる役割としての関数
関数には入力となる値を渡して何らかの処理をし、出力となる値を返してくれる役割があります。
ここで、入力のことを引数、出力のことを戻り値と呼びます。
function 関数名(引数)
処理
return 戻り値
end
中学生以上の人は数学で関数を習ったと思います。例えば1次関数はy=axで表されました。これも入力xに数字を入れるとa倍されたものが出力yとして出てくるというものでしたね。なので概念自体は同じです。
具体例
それでは具体例を見ていきましょう。まずは入力された2つの数値を足し算する関数を作ってみます。
function addNum(num1, num2)
return num1 + num2
end
これだけで足し算をしてくれる関数が書けました。使う時は下のようにして呼び出します。
addNum(12, 88)
上の例ではnum1に12が、num2に88が代入されて12+88=100が戻り値として戻ってきます。つまり、呼び出すときの引数の順番は関数を宣言したときの引数の順番と同じになります。これはかなり大切なので覚えておきましょう。
複数の戻り値がある関数
次に入力された2つの数値の和差積商を出力する関数を書いてみます。
function operation(num1, num2)
wa = num1 + num2
sa = num1 - num2
seki = num1 * num2
syo = num1 / num2
return wa, sa, seki, syo
end
多くのプログラミング言語では戻り値は1つだけですが、Lua言語では複数の戻り値を返すことができます。
wa, sa, seki, syo = operation(6, 2)
また、戻り値が複数ある場合は上のようにコンマで区切って変数を宣言することもできます。
引数のない関数
関数は引数を使わなくても構いません。
例えば次のような関数を作ることができます。
local function one()
return 1
end
one()
この関数自体あまり使い道はありませんが、呼び出すごとに1を返す関数となっています。
戻り値のない関数
また、関数は戻り値がなくても構いません。
local function displayTwo()
print("2")
end
displayTwo()
この関数は呼び出すごとに2を表示する関数です。
宿題
宿題として以下の関数を作ってみてください。また、作ったらスクリプトエディタで実行してみましょう。
- 2つの数字を足して、”足した結果は○です。”と返す関数add
ただし、○には足した結果の数値が入ります。 - 3つの文字列を連結して返す関数linkStrings
- 比例係数aと入力(独立変数)xの値を受け取って、1次関数y=axである出力(従属変数)yの値を返す関数linear
まとめ
- 関数では入力を引数、出力を戻り値と呼ぶ
- 引数や戻り値はなくても構わない
- 関数にもlocalをつけることができる
お疲れ様でした。第9回はここまでです。
次回はイベントとそれを用いた関数の起動方法について解説します。
コメント