プロシージャを作成します。
シグネチャ
{define-proc [access] [modifier-list]
{procedure-name [arg-def-list]}[:return-type]
code-body
}
access: アクセス属性です。有効な属性は、public、libraryまたはpackage です。access を指定しない場合、既定のアクセス属性は package です。
modifier-list: オプションの修飾子のリストです。プロシージャについては、inline が唯一の有効な修飾子です。
procedure-name: プロシージャの名前です。プロシージャの有効な識別子を作成します。小文字を使用することを推奨します。プロシージャ名に複数の単語がある場合はハイフンで区切ります。
arg-def-list: プロシージャの引数リストです。リストされた引数または残余引数を指定することができます。指定可能な引数のフォーマットは、位置フォーマットまたはキーワード フォーマットです。構文と意味など引数の詳細については、『Curl 開発者ガイド』の「
引数」を参照してください。
return-type: プロシージャの戻り値のデータ型です。プロシージャが値を返さない場合は、必ず
void を指定します。プロシージャが値を 1 つ返す場合は、その値のデータ型を指定します。プロシージャが複数の値を返す場合は、データ型のリストをかっこで囲み、各データ型をカンマで区切ります。プロシージャが複数の値を返す場合は、戻り値のデータ型の指定に識別子を含めることができます。この識別子は、コードの読者に各戻り値のコンテンツを知らせるという目的以外の意味はありません。つまり、識別子はコードの読者に対してドキュメントの役割を果たします。
return-type を指定しなかった場合、
any 型の戻り値を 1 つ指定したものと見なされます。
code-body: オプションの
return 式も含めてゼロ以上の数の式で構成されます。プロシージャが 1 つ以上の値を返すように定義する場合は、必ず
return 式が必要です。
return 式があると、プロシージャの呼び出しは
return 式で生成された値を受け取ります。
注意事項
プロシージャは、トップレベルのコードでのみ定義できます。
例
|| A procedure that returns two values.
{define-proc {return-2-values}:(ch:char, i:int)
{return '\u00bc', 0x00bc}
}
例
|| A procedure that returns the value of the argument
|| multiplied by 3.
{define-proc {triple x:int}:int
{return 3 * x}}