- 構文
- MODULE モジュール名
CONST 変数
PUBLIC 変数
DIM 変数
PROCEDURE モジュール名
PROCEDURE 関数名( )
FUNCTION 関数名( )
ENDMODULE
CLASS
CONST 変数
PUBLIC 変数
DIM 変数
PROCEDURE クラス名
PROCEDURE 関数名( )
FUNCTION 関数名( )
ENDCLASS
- 引数
- 戻値
モジュールとは
モジュールとは、同じような機能を持った関数をひとまとまりのグループにしたものを言います。
例えばPythonでは、数学計算用の関数を集めたmathモジュール、日付や時間を扱うdatetimeモジュールなどがあります。
モジュールは入れ子(ネスト)することはできません。関数名に「.(ピリオド)」をつけることで階層化したように見せる書き方はできます。
Cipher関数では、モジュール名がCipher、関数名にCaesar.encodeとCaesar.decodeで入れ子したような書き方をしています。
MODULE Cipher
MODULE Caesar
FUNCTION encode()
RESULT = ""
FEND
FUNCTION decode()
RESULT = ""
FEND
ENDMODULE
ENDMODULE
MODULE Cipher
FUNCTION Caesar.encode()
RESULT = ""
FEND
FUNCTION Caesar.decode()
RESULT = ""
FEND
ENDMODULE
使い方
モジュール内にある変数・関数・モジュール名を呼び出すには以下のように書きます。
- モジュール名.変数
- モジュール名.モジュール名
- モジュール名.関数名([引数], …)
CONSTまたはPUBLICで宣言されたものは、「モジュール名.変数」で外部からも呼び出すことができます。
DIMで宣言されたものは、外部からアクセスすることはできません。
モジュール内の関数から同一モジュール内の関数を呼び出すときモジュール名は省略できます。
コンストラクタ
モジュール名と同じ関数はコンストラクタとして機能します。コンストラクタはインスタンス生成時に自動的に呼び出されるのでメンバを初期化するときによく使われます。
以下の例では、PUBLICでnに1が代入されその後className関数でnの値が+1されるので。「2」が結果として出力されます。
PRINT className.n
CLASS className
PUBLIC n = 1
PROCEDURE className
n = n + 1
FEND
ENDCLASS
モジュールの書き方
以下のプログラムは、Pythonのmathモジュールの一部をUWSCで書いてみた例です。
PRINT math.pi
PRINT math.e
PRINT math.tau
PRINT math.fabs(-4)
PRINT math.factorial(5)
MODULE math
// 円周率π
CONST pi = 3.14159265358979323846
// 自然対数e
CONST e = 2.71828182845904523536
// τ(τ=2π)
CONST tau = THIS.pi * 2
// 引数の絶対値を返す
FUNCTION fabs(x)
RESULT = ABS(x)
FEND
// 引数の階乗を返す
FUNCTION factorial(x)
IF x <> ABS(INT(x)) THEN RESULT = ERR_VALUE
IFB x = 0 OR x = 1 THEN
RESULT = 1
ELSE
RESULT = x * factorial(x – 1)
ENDIF
FEND
ENDMODULE