API Basic Types zh tw - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

AS

ClassicUO • Basic

AS 設定純量變數的轉換規則。執行時的值種類為 Integer、Decimal、String、Array、Object 和 Unit(沒有值)。Boolean 使用 Integer 1/0。此 Basic 方言有自己的儲存規則;別名不代表 VB.NET 中相同名稱的位元寬度。

完整語法

VAR name AS type [= value]
DIM name AS type [= value]

參數

  • name — 宣告的變數名稱。讀取時取得目前值;每次後續指定都會再次套用 AS 轉換。
  • type — Integer、Long、Short、Byte:有號 32 位元整數,範圍 -2147483648…2147483647;Short 和 Byte 不會縮小範圍。Double、Single、Decimal:二進位 64 位元浮點數,內部稱為 Decimal,並非精確十進位運算。String:文字。Boolean、Bool:Integer 1/0。Variant、Object:保留輸入值種類,不要求一定是物件實例。名稱不區分大小寫。
  • value — 可省略的初始值:數字、文字、變數或函式結果。AS 屬於宣告語法;若需要轉換運算式,使用 CInt(value)、CDbl(value)、CStr(value)、CBool(value)。

傳回值

AS 本身不回傳值。讀取變數會取得所儲存的種類和值。邏輯數值結果使用 TRUE=1、FALSE=0。數量 2 非零,但 2=TRUE 為假;判斷是否有物品時,使用 count<>0 或 CBool(count)。

行為

  • 省略初始值時,有型別的 VAR 對整數/Boolean 產生 0,對 Double/Single/Decimal 產生浮點 0,對 String 產生空文字。無型別 VAR 和 VAR AS Variant/Object 產生 Unit。純量 DIM 會補上初始值:String 為空文字,其他為 0。Unit 經 AS 指定後仍為 Unit。
  • AS Integer 將範圍內小數向零截斷。CInt/CLng 則取整,正好一半時遠離零:2.6 變成 3,而 AS Integer 儲存 2。整數文字必須完全是十進位整數或 0x 十六進位數;"2.6" 不符合。轉換前請確認範圍。
  • AS Boolean 將原值與數值零比較:非零數字變 1,零變 0。不會辨識單字,連文字 "false" 都變 1。CBool 會先轉成數字。請使用數值/邏輯值,或明確將文字與預期單字比較。
  • AS String 使用引擎的文字表示。AS Double/Single/Decimal 以小數點解析數值文字。數值 AS 把 Array 轉成 0,但對 Object 和無效數值文字產生可由 TRY/CATCH 處理的錯誤。CInt/CLng/CDbl/CSng/CBool 則採用寬鬆讀取:無法辨識的文字、Array、Object 或 Unit 先變成 0。依賴文字轉換前,請先檢查 IsNumeric(value)。
  • 宣告先計算初始值,再套用 AS,最後儲存結果與型別名稱。後續指定重複轉換。浮點值是近似值,不保證精確的十進位金額運算。作用域請見 VAR / DIM,名稱綁定保護請見 CONST。
  • As 也支援已宣告的 Structure 名稱。該型別的 VAR 與 DIM 若無初始設定式,會建立預設欄位。只接受同一宣告型別,不會在不同結構型別間轉換。巢狀值複製與參考欄位詳見 Structure / New。

範例

1. 指定轉換與取整

# source=2.6 是浮點數。whole AS Integer 儲存 2;CInt(source) 將 3 存入 rounded。Main 回傳 2*10+3=23,讓兩種轉換可以一起檢查。
Option Explicit On
SUB Main()
    VAR source = 2.6
    VAR whole AS Integer = source
    VAR rounded = CInt(source)
    RETURN whole * 10 + rounded
END SUB

參數與執行說明:

source=2.6 是浮點數。whole AS Integer 儲存 2;CInt(source) 將 3 存入 rounded。Main 回傳 2*10+3=23,讓兩種轉換可以一起檢查。

2. 數量與邏輯值不同

# count=2 是物品數量。hasItems AS Boolean 變成 1。count=TRUE 為假,因為 TRUE 恰好等於 1;count<>0 為真。Main 回傳 hasItems=1,表示有物品,不表示只有一個。
Option Explicit On
SUB Main()
    VAR count = 2
    VAR hasItems AS Boolean = count
    IF count = TRUE THEN
        RETURN -1
    END IF
    IF count <> 0 THEN
        RETURN hasItems
    END IF
    RETURN FALSE
END SUB

參數與執行說明:

count=2 是物品數量。hasItems AS Boolean 變成 1。count=TRUE 為假,因為 TRUE 恰好等於 1;count<>0 為真。Main 回傳 hasItems=1,表示有物品,不表示只有一個。

3. Variant 保留值種類

# value AS Variant 先存 Integer 7,再存 String "ore"。text AS String 一開始為空。CStr(12) 產生文字 "12";兩段文字相接得到 "ore12",由 Main 回傳。Variant 允許改變值種類。
Option Explicit On
SUB Main()
    VAR value AS Variant = 7
    value = "ore"
    VAR text AS String
    text = value + CStr(12)
    RETURN text
END SUB

參數與執行說明:

value AS Variant 先存 Integer 7,再存 String "ore"。text AS String 一開始為空。CStr(12) 產生文字 "12";兩段文字相接得到 "ore12",由 Main 回傳。Variant 允許改變值種類。


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

Basic