Verse言語の関数には、関数の動作を指定できる エフェクト と呼ばれるものがあります。
エフェクトには、加算エフェクト と 排他的エフェクト の2種類があります。
加算エフェクトは1つの関数に対して複数追加できますが、排他的エフェクトは最大1つまでしか追加できません。
エフェクトは指定子として定義時に指定します。
代表的なエフェクトの種類と効果を次に示します。
エフェクト | エフェクトの種類 | 効果 |
---|---|---|
suspends |
加算エフェクト | 関数の実行が非同期であることを示す。suspends 式を用いることにより、関数を終了せずに一時停止できる関数。 |
decides |
加算エフェクト | 失敗する可能性がある関数。失敗コンテキスト内で関数を呼び出す必要がある。 |
converges |
排他的エフェクト | 関数が確実に実行完了することを保証する。変数の値が変更されるなど、関数実行による副次的な効果がない。 |
computes |
排他的エフェクト | 関数が確実に実行完了することを保証しない。関数の入力が同じ場合に、同じ出力を返す関数。 |
varies |
排他的エフェクト | 関数の入力が同じ場合に、同じ出力を返すことを保証しない関数。関数によって実行される処理をロールバックできる。 |
transacts |
排他的エフェクト | 変数の値を読み書きできることを可能とする関数。関数によって実行される処理をロールバックできる。 |
ここでは、エフェクト decides
を利用した関数の例を示します。
この関数は、引数 Value
に指定した整数が0よりも大きい場合に失敗します。
失敗する可能性のある関数は、失敗時に処理をロールバックできる必要があるため、エフェクト varies
も追加しています。
IsPositive(Value : int) : void = Value > 0
この関数は、失敗コンテキストで実行する必要があります。
失敗する可能性のある関数は、引数の前後を ()
ではなく []
で囲う必要があることに注意しましょう。
IsPositive[5] # 失敗コンテキストで実行していないため、コンパイルエラーになる。
if (IsPositive[5]):
Print("Positive")
以上が、関数のエフェクトです。
その他、UEFNのVerseに関する情報は、以下の記事にまとめています。
[UEFN] はじめてのVerseプログラミング
VerseはEpic Gamesが開発したプログラミング言語で、Fortniteクリエイターが仕掛けをカスタマイズするときに使用できます。
Fortnite用のUnreal Engine(UEFN)で独自のゲームを作成するときに使用できます。
Colory GamesのTech Blogでは、Verseプログラミングに関して一から初心者が学べるように、複数の記事を掲載しています。