BT语言中的运算符非常丰富,主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符等。
下面我将逐一介绍这些运算符及其用法:
复杂表达式中优先使用括号明确顺序,避免读者依赖记忆优先级。
+ 加法运算符
- 减法运算符
* 乘法运算符
/ 除法运算符
% 取模运算符(求余数)
x = 12 y = 29 % 5 z = (x + y) * 5 / 2
> 大于
< 小于
== 等于
!= 不等于
>= 大于等于
<= 小于等于
price = 19.99 if price >= 10 { print '大于等于10' }
&& 逻辑与
|| 逻辑或
! 逻辑非
price = 19.99 num = 20 if price >= 10 && num < 10 { print 'ok' }
& 按位与,对两个数的二进制表示进行逐位比较,如果两个相应的位都为1,则该位的结果为1,否则为0
| 按位或,对两个数的二进制表示进行逐位比较,如果两个相应的位中至少有一个为1,则该位的结果为1,否则为0
^ 按位异或,对两个数的二进制表示进行逐位比较,如果两个相应的位不同,则该位的结果为1,否则为0
~ 按位取反,对一个数的二进制表示进行逐位取反,即0变为1,1变为0
<< 左移,将一个数的各二进制位全部左移若干位,由符号位(最左边的位)的空位则以0来填充
>> 右移,将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃
a & b a | b a ^ b a << 1 a >> 1
x = 20 y = x | 2 z = y >> 2
= 简单赋值
+= 加后赋值
-= 减后赋值
*= 乘后赋值
/= 除后赋值
%= 取模后赋值
<<= 左移后赋值
>>= 右移后赋值
&= 按位与后赋值
^= 按位异或后赋值
|= 按位或后赋值
x = 20 x += 10 x %= 3
i++ i-- ++i --i
? : 条件运算符,格式为表达式1 ? 表达式2 : 表达式3。如果表达式1为真,则结果为表达式2的值,否则为表达式3的值。
x = 10 // 三元运算 y = x == 10 ? 1 : 2 // 等同于下面的代码 if x == 10 { y = 1 } else { y = 2 } // 二元运算 x == 10 ? print 'yes' // 等同于下面的代码 if x == 10 { print 'yes' }
说到二元运算,BT的魔性依然是性感的,示例:
x = 8 // 无论是三元还是二元都可以进行赋值,因为BT语言中,任何表达式都有返回值 // x == 9 不成立,所以这里会返回一个null,在别的编程语言中不要这么实验了,会报错 a = x == 9 ? 7
, 逗号运算符,用于顺序执行一系列运算,整个逗号表达式的值为最后一个表达式的值。
a=1, b=2, c=3
BT 语言中常用的三个取值运算符有:
??:空值合并
||:逻辑或取值
&&:逻辑与取值
它们都可以用来简化代码,让变量默认值、条件执行、对象判断写起来更方便。
??
?? 用于给 null 或 empty 提供默认值。
它的规则是:
null,也不是 empty,返回左边
null 或 empty,返回右边
name = input_name ?? '游客' println(name)
意思是:
如果 input_name 有正常值,就使用 input_name 如果 input_name 是 null 或 empty,就使用 '游客'
||
|| 用于从左到右选择一个可用值。
它的规则是:
name = a || 123
意思是:
如果 a 是真值,就把 a 赋值给 name 如果 a 是假值,就把 123 赋值给 name
|| 常用于设置更宽泛的默认值。
name = input_name || '游客' count = total || 0 path = file_path || './'
它和 ?? 的区别是:
name = input_name ?? '游客'
只在 input_name 是 null 或 empty 时使用默认值。
name = input_name || '游客'
只要 input_name 是假值,就使用默认值。
&&
&& 用于在左边成立时,继续执行右边。
它的规则是:
user && demo()
意思是:
如果 user 存在,就执行 demo() 如果 user 不存在,就不执行 demo()
判断变量存在后再执行函数:
user && login(user)
判断回调函数存在后再调用:
callback && callback()
??
只处理 null 和 empty。
name = input_name ?? '游客'
适合用于明确的空值默认值。
||
左边是假值时,返回右边。
name = a || 123
适合用于更宽泛的默认值选择。
&&
左边是真值时,继续返回右边。
user && demo()
适合用于条件执行、对象存在后再访问、回调函数存在后再调用。
?? 只管 null 和 empty,空了才用默认值 || 左边不行用右边,常用于默认值 && 左边成立才继续,常用于条件执行
() 括号运算符,用于改变运算顺序或进行函数调用。
[] 下标运算符,用于访问数组元素。
. 成员运算符。
print ['hello'][0].to_lowercase()
这些运算符是BT语言编程的基础,掌握它们对于编写高效、可读性强的代码至关重要。