API Basic Module zh tw - 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。Read 可讀到 Counter.count=5。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。Read 可讀到 Counter.count=5。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