跳到主要内容

運算符

特殊符號​

  • # ; 引入模塊
  • @ ; 導出模塊
  • -> ; match arm 與 if/else 分支(如 cond -> body)
  • : ; match 表達式(如 x: { ... })
  • { } (true) ; 無限循環(後綴式,舊式寫法);前置式 !! { } / true { } 同義,為新式預設(no fmt 輸出)
  • <- ; 範圍遍歷(如 i <- [a..b]: { })
  • .. ; 父類 / 範圍運算子(如 [a..b))
  • . ; 類自身(⚠️ 在區間上界中,應使用 self.method 而非 .method,避免 ... 與 return 運算子歧義)
  • ? ; option 類型前綴(如 ?i64、?str)
  • (cond) { } ; 條件循環(前置式,新式預設,等同後綴式 { } (cond))
  • N * { } ; 計數循環(前置式,新式預設,等同後綴式 { } * N,N ≤ 0 跳過)
  • ! ; 假(false);也是「不執行」循環前綴(! { } 永不執行)
  • !! ; 真(true);也是「恆執行」循環前綴(!! { } 無限循環)
  • { } () ; 不執行(空括號代表 false;後綴式,舊式寫法);前置式 ! { } / false { } / () { } 同義,為新式預設
  • * ; 中斷 替代break(規劃中,暫不替代)
  • ** ; 跳過本輪 替代continue(規劃中,暫不替代)
  • ... ; 返回語句,终止函数 替代return(規劃中,暫不替代)
  • run ; 啟動異步線程
  • awy ; 等待異步線程完成

算術運算符​

  • + ; 加法
  • - ; 減法(也可用於字串拼接)
  • * ; 乘法(也可用於字串重複)
  • / ; 除法

比較運算符​

  • == ; 等於(str 有真正的字串相等比較,多字元合法)
  • != ; 不等於(同上)
  • < ; 小於
  • > ; 大於
  • <= ; 小於等於
  • >= ; 大於等於
關係運算子(< > <= >=)沒有字串字典序語意

str 只有相等比較(== / !=);對字串做關係運算過去會靜默回傳 false,現在是編譯錯誤。

  • 合法:單字元字串字面量 'a',隱式視為 char(碼點),可與另一個單字元字面量或 char("a")比較。數值型別照常。
  • 錯誤:多字元字串 —— 多字元字面量 'ab'、str 變數、回傳 str 的呼叫。
  • 需要字典序比較時用 str.compare(b)(回傳 -1 / 0 / 1)。
'a' <= 'z' ; true — 單字元字串隱式 char
ch >= 'a' ; ch 為 char,OK
'a' > "b" ; 單字元字串 vs char,OK
'abc' < 'abd' ; 編譯錯誤:多字元字串
s1 < s2 ; 編譯錯誤:str 變數
s1.compare(s2) > 0 ; 正確寫法

邏輯運算符​

  • && ; 邏輯與
  • || ; 邏輯或(也可用於 match 分支組合,如 nil || err -> body)
  • ! ; 邏輯非

位運算符​

  • & ; 按位與
  • | ; 按位或
  • ^ ; 按位異或
  • ~ ; 按位取反
  • << ; 左移
  • >> ; 右移

賦值運算符​

  • = ; 賦值
  • += ; 加賦值
  • -= ; 減賦值
  • *= ; 乘賦值
  • /= ; 除賦值
  • %= ; 模賦值
  • &= ; 位與賦值
  • |= ; 位或賦值
  • ^= ; 位異或賦值
  • <<= ; 左移賦值
  • >>= ; 右移賦值

其他​

  • ? ; 三元運算符(如 c = flag ? 1 : 2)
  • as ; FFI 指標型別轉換(如 y = x as *byte)
  • .. ; 切片範圍(如 arr[1..3]、arr[1..]、arr[..3])