(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


関数の引数にデフォルト値を設定する方法【UEFN】【Verse】


このエントリーをはてなブックマークに追加


はじめに

今回はVerseで「関数に渡す値が基本的には同じだけどたまに変えたい」という時に使える

関数の引数にデフォルト値を設定する方法の紹介です!


関数の引数にデフォルト値を設定する方法

早速ですが関数の引数にデフォルト値を設定するは、引数名の前に?を付けます。

なお、引数をデフォルトと違う値にする場合は「?引数名 := 値」という形で設定します。

#numというデフォルトが0の引数を設定した関数
Sample(?num : int = 0):void=
    Print("num : {num}")
#何も指定しなければnumは0
Sample()

#numを1に設定して実行
Sample(?num := 1)


もちろん、複数の引数にデフォルト値を設定する事も可能で、

この場合は一つだけ値を変えるという事もできます。

#numとtext、2つの引数共にデフォルト値がある関数
Sample(?num : int = 0, ?text : string = "abc"):void=
    Print("num : {0}, text : {text}")
#両方指定してもいいし
Sample(?num := 1, ?text := "abc")

#片方だけ指定する事もできる
Sample(?text := "abc")


さらに型の前にも?を付ける事でデフォルト値が無し(失敗, false)にする事も出来ます。

#Agentはデフォルト無し
Sample(?Agent : ?agent = false):void=
    #Agentが入力されているかのチェック
    if(AgentEntity := Agent?):
        Print("Agentあり")
#そのまま実行すればAgentは無し
Sample()

#Agentを指定する場合の実行方法
Sample(?Agent := option{Agent})


また、前回紹介したコールバックを実装する方法と合わせれば、



必要な時だけコールバックを設定出来る関数も作れます。

#必要な時だけコールバックを設定出来る関数
Sample(?Callback : ?type{_() :void} = false):void=
    #コールバックが入力されていれば実行
    if(CallbackEntity := Callback?):
        CallbackEntity()

Finish():void=
    Print("Finish")
#コールバックが無い場合
Sample()

#コールバックを設定する場合
Sample(?Callback := option{Finish})