API Basic Module ja - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Module / End Module

ClassicUO • Basic

Module は関数、手続き、VAR/DIM、CONST を一つの名前にまとめます。外部からは Tools.Sum や Counter.count、同じモジュール内では短いメンバー名を使えます。

正確な構文

Module moduleName
    members
End Module
moduleName.member(arguments)
moduleName.field

パラメーター

  • moduleName — moduleName:Tools などの単純な識別子。大文字と小文字は区別しません。UO は予約名です。重複名と入れ子の Module は禁止です。
  • members — members:SUB/FUNCTION、スカラー VAR/DIM、CONST、Include、有効な Option Explicit。フィールドには配列やオブジェクトの値も格納できます。モジュール直下の DIM[...] は未対応です。関数で配列を作り VAR に保存してください。
  • member / arguments — member / arguments:メンバー名と関数の引数。Tools.Sum(2, 3) は left=2、right=3 を渡します。Counter.count の読み出しに括弧は不要です。

戻り値

Module 自体は値を返さず、Module(...) として呼び出しません。Tools.Sum(...) は関数の RETURN 値、フィールドは保存された値を返します。比較結果は Integer 1/0 で、条件式や比較では TRUE/FALSE に対応します。任意の数値、ID、個数を一律に真偽値とは扱いません。

動作

  • ファイル直下に Module を宣言し End Module で閉じます。Include でモジュール全体やメンバーを読み込めます。エラーは元ファイルと行番号を保持します。Option Explicit は物理ファイル単位です。
  • 準備時に完全名を収集し、短い参照を現在のモジュールに結び付け、実行前にアクセスを検証します。明示的なローカル引数、VAR、CONST、DIM は同名フィールドを隠します。それ以外はモジュールのフィールド、従来のグローバル変数の順に検索します。
  • 独立した実行の開始時に宣言順で初期化します。同じ実行の入れ子呼び出しはフィールド変更を共有します。新しい実行は初期状態に戻り、並列スクリプトとは共有しません。ディスクへの設定保存ではありません。
  • 関数/手続きの既定は Public、フィールド/定数は Private です。Private は Module 内だけで使えます。Public / Private を参照してください。
  • IDE は完全な手続き名を表示します。必須引数のない公開手続きは一覧から起動でき、非公開ヘルパーは内部用のままです。補完、定義への移動、変数表示は現在のモジュールを考慮します。

使用例

1. 別モジュールの同名関数

# Tools.Sum は left=2 と right=3 を足して 5 を返し、Other.Sum は掛けて 6 を返します。完全名で区別でき、Main は Integer 11 を返します。
Option Explicit On
Module Tools
    Public Function Sum(ByVal left, ByVal right)
        Return left + right
    End Function
End Module
Module Other
    Public Function Sum(ByVal left, ByVal right)
        Return left * right
    End Function
End Module
Sub Main()
    Return Tools.Sum(2, 3) + Other.Sum(2, 3)
End Sub

パラメーターと実行の説明:

Tools.Sum は left=2 と right=3 を足して 5 を返し、Other.Sum は掛けて 6 を返します。完全名で区別でき、Main は Integer 11 を返します。

2. 一回の実行で共有するフィールド

# count は 0 から始まり、Increment ごとに同じフィールドへ 1 を足します。二回後は before=2、Counter.count=5 を Read も参照できます。Main は 2*10+5、Integer 25 を返します。次の起動では再び 0 です。
Option Explicit On
Module Counter
    Public Var count As Integer = 0
    Public Sub Increment()
        count += 1
    End Sub
    Public Function Read()
        Return count
    End Function
End Module
Sub Main()
    Counter.Increment()
    Counter.Increment()
    Var before = Counter.Read()
    Counter.count = 5
    Return before * 10 + Counter.Read()
End Sub

パラメーターと実行の説明:

count は 0 から始まり、Increment ごとに同じフィールドへ 1 を足します。二回後は before=2、Counter.count=5 を Read も参照できます。Main は 2*10+5、Integer 25 を返します。次の起動では再び 0 です。

3. 真偽値の戻り値

# maximum=4 は Limits 内で参照できます。Allowed(3) は Integer 1、Allowed(7) は Integer 0 です。accepted=TRUE と rejected=FALSE で確認し、成功時 Main は Integer 10 を返します。
Option Explicit On
Module Limits
    Private Const maximum = 4
    Public Function Allowed(ByVal amount)
        Return amount <= maximum
    End Function
End Module
Sub Main()
    Var accepted = Limits.Allowed(3)
    Var rejected = Limits.Allowed(7)
    If accepted = TRUE AndAlso rejected = FALSE Then
        Return 10
    End If
    Return 0
End Sub

パラメーターと実行の説明:

maximum=4 は Limits 内で参照できます。Allowed(3) は Integer 1、Allowed(7) は Integer 0 です。accepted=TRUE と rejected=FALSE で確認し、成功時 Main は Integer 10 を返します。


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic