パラメータ

パラメータは、関数に情報を渡すために使用される変数です。Intent 言語では、関数パラメータは値によって渡されます。つまり、各変数のコピーが関数に渡されます。コピーされた変数への変更は元の値には反映されません。関数またはメソッドには、任意の数の(コンマで区切られた)パラメータを含めることができます。渡されたパラメータは、関数内のステートメントの変数として使用されます。

オプション パラメータ

オプション パラメータは、オプション モディファイヤで宣言されます。パラメータ一覧のオプション パラメータに従うパラメータも、オプションまたは変数である必要があります(変数パラメータについては次のセクションで説明します)。また、オプション パラメータは引数が指定されていない場合に使用する既定の式も指定する必要があります。

Function avgTest10(inList As List, Optional limit As Number = 10.0) As Number
   Dim i As Integer
   Dim total As Number = 0.0
   Dim avg As Number  

   For i = 1 To length(inList)
      total = total + nth(i,inList)
   Next i  

   avg =  total / length(inList)

   If avg > limit Then
      printValue("Average = " + stringValue(avg) + " Exceeds limit!")
   Else
      printValue("Average = " + stringValue(avg))
   End If

   Return avg
End Function

前の例では、数値の一覧の平均値が計算されています。平均が指定された制限を超えている場合、メッセージが出力されます。制限は既定値 10 のオプション パラメータです。オプション パラメータの既定値を使用して関数を呼び出すには、次のような構文になります。

オプション値制限の値をオーバーライドするには、関数呼び出し内で新しい値を割り当てます(:= 代入演算子が使用されている点に注目してください)。

注: この関数呼び出しでは、関数宣言で定義された順序と同じ順序でオプション引数を指定する必要はありません。ただし、最初に必要な引数をすべて指定し、宣言で定義された順序と同じ順序にする必要があります。

オプションの引数の代替呼び出し構文

:= 演算子は、実際の引数一覧で使用されます。これは、一般的な一覧では許可されていません。Apply などの一部の関数では、汎用の一覧から引数を取るため、:= を使用することができません。たとえば、Apply 関数などでは、実行時に関数の名前の計算が必要になる場合があります。この場合、引数は一覧として提供されます。このような状況に対応するために、代替の構文がサポートされています(旧バージョンの Intent 言語との整合性も確保されているため、呼び出しをすべて記述し直す必要はありません)。

代替の構文では、"name, value" の形式で引数を指定することができます。ルールの代替形式は次のようになります。

Rule testLimit As Number = avgTest10({2, 4, 9}, :limit, 4)

変数引数パラメータ(...)

変数パラメータは、モディファイヤとして省略記号(...)で宣言されます。関数を宣言して任意の数のパラメータを取得できます。必須またはオプションのパラメータが一致すると、残りのパラメータが一覧にまとめられます。この一覧は、変数パラメータの値として提供されます。

関数ごとに 1 つの変数パラメータのみを使用可能で、宣言の最後のパラメータにする必要があります。変数パラメータで ... モディファイヤを省略すると、コンパイル時エラーが発生します。オプションのタイプ名を指定した場合、一覧内の各要素のタイプを示します。一覧にさまざまなタイプのパラメータが記述されている場合には、タイプ任意を使用します。

関数のボディ内で、変数パラメータを一覧として使用することができます。値が提供されていない場合、一覧は空になります。そのため、変数パラメータ一覧もオプションで、空の一覧という固定された既定値を持ちます。

次の例は、タイプが数値の 1 つの変数パラメータを持つ関数を示します。関数呼び出しから提供される引数のタイプは、すべて数値または整数である必要があります。