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