関数とは?
一言でいうと、関数は「機能」です。最初に登場したprintというのも関数で、これはロブロックスに初めから入っている組込関数というものです。print関数は「出力ウィンドウに文字などを表示する」機能ということになります。
この章では、その関数の作り方について学びます。
もう少し具体例を挙げてみましょう。ロボットにスパゲッティの作り方を教えるとしたらどうでしょう。手順としては、
- お湯を沸かす
- パスタを入れる
- 15分間ゆでる
- ソースを温める
- お皿にパスタを盛る
- 上からソースをかける
という感じになります。毎回、1から6を指示するのはとても面倒なことです。これを「スパゲッティを作れ」と命令しただけで実行してくれるとかなり楽です。つまり、このような一連ひとまとまりまとまりにしたものが「関数」というわけです。
もし、これをプログラムで記述するなら次のようになります。
local function makeSpaghetti()
-- スパゲッティを作る工程を実行する
end
makeSpaghetti() -- 関数を実行する
関数の作成
実際に動作するプログラムを作成してみましょう。テストとして、好きな食べ物を出力ウィンドウに表示するプログラムを作成します。
- ServerScriptServiceに新しいScript(スクリプト)を作成します。
- スクリプトの名前をFunctionsPracticeに変更します。
- 「Hello World」を削除します。
- 最上部にコメントを入れておきましょう。例: — 好きな食べ物を表示
次に、関数を作成して名前を付けます。すべての関数には、その目的が何であるかを思い出すのに役立つ名前を付けます。関数名は2つ以上の英単語の組み合わせがベストです。英単語の最初の文字は小文字で、次の単語の1文字目だけ大文字にします。(Roblox暗黙のルール)
例:addPoints()、restartGame()、rainFlamingLlamas()
「local function printFood()」と入力し、Enter キーを押します。すると次のように自動的に「end」が挿入(オートコンプリート機能)されると思います。関数は「local 関数名()」で始まり、「end」で終了します。
local function printFood()
end
何らかの理由でオートコンプリート機能が働かない場合は、 end を入力してください。関数に終わりがない場合、コードは実行されません。
関数へのコードの追加
関数のすべてのコードは、「local function printFood()」と「end」の間に記述する必要があります。これらの 2 つの間にないコードは、関数が呼ばれても実行されません。
local function printFood()
-- 関数が呼び出されたときに実行されます
end
-- printFoodを呼び出しても、ここのコードは実行されません
「local function printFood()」と「end」の間の行に、 print()を使用して好きな食べ物を記述します。
local function printFood()
print("カレー")
end
関数内に入力すると、コードが自動的にインデントされます。これにより、関数の開始と終了を簡単に確認できます。自動でインデントされない場合は、行の先頭でTab キーを押すと、すばやくインデントできます。
関数に実行を指示する
関数を作成した後にもう 1 つ行わなくてはならないことがあります。それは、この関数を実行するように指示することです。「関数の呼び出し」とも呼ばれます。関数は呼び出されるまで実行されません。関数を呼び出すには、最後に()を含む関数の名前を記述します。
- endの下にprintFood()と入力します。
local function printFood()
print("カレー")
end
printFood()
- プログラムをテスト実行します。お気に入りの食べ物が、出力ウィンドウに表示されるはずです。
トラブルシューティング
思うような結果にならない場合、次の項目をチェックしてください。
- 「print(“カレー”)」文が「local function printFood()」と「end」の間にありますか?
- 「カレー」以外の文字はすべて半角英字になっていますか?
- 「カレー」は引用符(ダブルコーテーション)で囲まれていますか?
- 「printFood()」は、作成した関数の下に記述していますか?
[ 1-3 親と子 ]
[ 2-2 パラメータとイベント ]