はじめに
今回は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})