ユーザー関数の定義は、キーワード def[ine] 又は def[unc] を用いて行います。
C言語と同様、トップレベルでのみ関数の定義が可能です。(定義位置は呼出位置の前後どちらに置いても OK です。)
関数定義の文法: def NAME([ARG1,ARG2,ARG3,...]){ .... } 関数呼出の文法: NAME([ARG1,ARG2,ARG3,...])
引数も戻り値も無い関数の定義例
def dot(){ # 呼び出される度に . 文字を1文字表示します。 putc('.') } dot() # 1回目の呼び出しです。 dot() # 2回目の呼び出しです。 dot() # 3回目の呼び出しです。
複数の戻り値を持つ関数の定義例
def cal4(x,y){ # 四則演算をする関数 cal4 を定義します。 return(x+y,x-y,x*y,x/y) # 和、差、積、商を計算して4つの戻り値とします。 } add,sub,mul,div=cal4(2,3) # 引数 2 と 3 で関数 cal4 を呼出します。 print("%f,%f,%f,%f\n",add,sub,mul,div) # 結果を表示します。( %f などの書式指定はC言語のものと同じです。)
引き数と戻り値
- 引き数と戻り値は、常に"値渡し"で渡され(戻され)ます。
- 実引数(Argument)と仮引数(Parameter)の数が一致しない場合、余分なデータは無視され、不足するデータは未定義となります。
- 戻り値は、関数 return() で戻します。(複数個の戻り値を指定できます。)
関数のスコープ
- ユーザー定義関数は、常に"グローバルスコープ"を持ちます。(システム定義関数と同じ。)