アンリアる! Verse入門編 ~対話形式で学ぶUEFN~
BOOTHでUEFN Verse入門書を販売していますUEFN上でVerseを使って開発するために必要となる基礎知識を一冊の本にまとめた本です。 対話形式によるわかりやすい説明を目指しました。無料の試し読みも可能ですので、ぜひ読んでみてください!
[UEFN] はじめてのVerseプログラミング – 関数の定義

関数の定義

Verse言語では、関数を次のように定義します。

[関数名]([引数の名前] : [引数の型], ...) <[指定子]>... : [戻り値の型] =
    [処理本体]
入力 内容
[関数名] 関数呼び出し時にどの関数を呼び出すかを識別するために必要となる名前。識別子とも呼ばれる。
[引数の名前][引数の型] 関数に入力する値を識別する名前と型を指定する。関数は複数の引数を受け取ることができ、カンマ(,)区切りで指定可能。
[指定子] 関数の動作を決めるエフェクト(後述)を指定する。任意の数を指定でき、指定しなくても問題なし。
[戻り値の型] 関数から出力される値の型を指定する。
[処理本体] 関数で実行する処理を記述する

[引数の型][戻り値の型] に指定する型は、別の記事で紹介していますので参考にしてください。

[UEFN] はじめてのVerseプログラミング - 関数の定義
Verse言語について、関数を定義する方法を説明します。

引数、戻り値なしの関数

関数定義の一番簡単な例として、引数や戻り値のない関数 MyFunc を定義するプログラムを次に示します。
戻り値がない場合は、戻り値の型 void を指定することに注意しましょう。

MyFunc() : void =
    Print("MyFunc Call")

関数 MyFunc を呼び出すプログラムは次のようになります。

MyFunc()

実際に動作確認しましょう。
動作確認環境は、次の記事を参考にして構築してください。

[UEFN] はじめてのVerseプログラミング - ログを出力してみよう
はじめてのVerseプログラムとしてログを出力してみましょう。 Print関数を利用することで、プログラムを出力できます。

関数 MyFunc を定義するプログラムは、クラス output_log の外側に追加します。
output_log クラスのメンバ関数 OnBegin には、関数 MyFunc を呼び出すプログラムを追加します。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

# 関数「MyFunc」を定義する
MyFunc() : void = Print("MyFunc Call")

# 「creative_device:を継承した、独自のデバイスクラス「output_log」を定義する
output_log := class(creative_device):

    # ゲームプレイ開始時に実行されるメンバ関数
    OnBegin():void=
        # 定義した関数「MyFunc」を呼び出す。
        MyFunc()

この状態でビルドして実行すると、「MyFunc Call」という文字列がログに出力されるはずです。

関数呼び出し

引数、戻り値ありの関数

2つの引数 AB を受け取り、その和 A + B を戻り値とする関数 MyFunc を定義するプログラムを次に示します。

MyFunc(A : int, B : int) : int =
    A + B

関数の呼び出し側では、関数の戻り値を変数に代入できます。
関数 MyFunc の戻り値をログに出力するプログラムを次に示します。

var C : int := MyFunc(3, 5)
Print("MyFunc Result: {C}")    # 「MyFunc Result: 8」が表示される

名前付き引数を持つ関数

関数呼び出し時に、名前付きでの引数指定を要求する場合は、引数名の前に ? を追加します。

[関数名](?[引数1の名前] : [引数1の型], ...) <[指定子1]>... : [戻り値の型] = [処理本体]

名前付き引数 B を持つ関数を定義するプログラムの例を次に示します。

MyFunc(A : int, ?B : int) : int =
    A + B

名前付き引数を持つ関数では、呼び出し時に引数の名前付きで引数を渡す必要があります。

var C : int := MyFunc(-1, ?B := 6)
Print("MyFunc Result: {C}")    # 「MyFunc Result: 5」が表示される

デフォルト値のある引数を持つ関数

デフォルト値のある引数を持つ関数も定義できます。
デフォルト値は名前付き引数に対してのみ設定可能です。

[関数名](?[引数1の名前] : [引数1の型] := [引数1のデフォルト値], ...) <[指定子1]>... : [戻り値の型] = [処理本体]

デフォルト値のある引数を持つ関数の定義例を次に示します。

MyFunc(A : int, ?B : int := 3) : int =
    A + B

関数呼び出し時に、値を指定しない場合はデフォルト値が指定されたものとして関数の処理が行われます。

var C : int := MyFunc(-1)
Print("MyFunc Result: {C}")    # 「MyFunc Result: 2」が表示される

以上が、関数を定義する方法です。

その他、UEFNのVerseに関する情報は、以下の記事にまとめています。

[UEFN] はじめてのVerseプログラミング
VerseはEpic Gamesが開発したプログラミング言語で、Fortniteクリエイターが仕掛けをカスタマイズするときに使用できます。 Fortnite用のUnreal Engine(UEFN)で独自のゲームを作成するときに使用できます。 Colory GamesのTech Blogでは、Verseプログラミングに関して一から初心者が学べるように、複数の記事を掲載しています。