Crystal 構文のカスタム関数は、Crystal 構文式と同様に式を中心に構成されています。次に示す構文式のいずれかを使用できます。
Function ([argList])
expressions
Function ([argList])
(
expressions
)
オプションの要素です。関数の呼び出し時に関数に渡される引数を表す変数のリストです。複数の変数がある場合は、それぞれをカンマで区切ります。argList には何も指定しないこともできます。ただし argList を囲んでいるカッコはオプションではないので、argList に何も指定しない場合も必要です。
[オプション] simpleType [範囲] [配列] varName [:=defaultValue]
オプションの要素です。カスタム関数の呼び出し時に引数を省略できることを示します。ある引数をオプションにした場合は、その後に続く引数もすべてオプションにする必要があります。関数の呼び出し時にオプションの引数に値を指定する場合は、その前にあるすべての引数に対しても値を指定する必要があります。
必須要素です。次のどれか 1 つの型を指定できます。
オプションの要素です。引数が範囲変数かどうかを指定します。
注 論理値範囲は使用できません。
オプションの要素です。引数が配列変数かどうかを指定します。
必須要素です。引数を表す変数の名前です。
オプションの引数の場合は必須です。dafaultValue は定数または定数式です。定数式とは、コンパイル時に定数値に単純化できる変数を含まない式です。カスタム関数の呼び出し時にオプションの引数が省略されている場合は、その引数のデフォルトの値が使用されます。
必須要素です。Crystal 構文のカスタム関数から返される値は、一連の式の中で最後に評価された式の値です。この構文は、Crystal 構文式の構文と同じです。
カスタム関数での変数宣言は、デフォルトではローカル スコープです。これに対して Crystal 構文式の変数宣言は、デフォルトではグローバル スコープです。