跳到主要内容

基本运算符(高级)

运算符

运算符之间的优先级如下:

  • 单目运算符 - 取负数
  • *, /
  • +,-

整个规则也跟 java 的运算符优先级保持一致。你可以通过括号来强制指定优先级,比如例子中的 a-(b-c)就是通过括号,强制先执行 b-c ,再后再被 a 减。 通常来说,复杂的算术表达式,从代码可读性和稳健角度,都推荐使用括号来强制指定优先级。

表达式参与运算

versions 1.8.0+ | 2024-07-24

部分表达式可以参与简单的数学运算,比如:

表达式:=SUM(A1,A2)*2,会先计算SUM(A1,A2)的结果,然后再乘以2得到最终的值。

设计:

预览:

versions 1.8.2+ | 2024-10-11

有时日期可能作为表达式的参数,这时候系统可能会误这个日期(2024-10-11)当做运算表达式拆分。为了确保功能正常需要用英文单引号(')讲日期参数包裹,以确保系统能正确识别。

字符串插值(String Interpolation)

字符串拼接可以用加法,比如

let name = "aviator";
let s = "hello," + name;
let name = "aviator";
let a = 1;
let b = 2;
let s = "hello, #{name}, #{a} + #{b} = #{a + b}";
p(s);

字符串中 #{} 括起来的表达式都将在当前上下文里自动执行求值,然后插入到最终的结果字符串,上面的例子将输出:

hello, aviator, 1 + 2 = 3

逻辑运算符

  • >  大于
  • >= 大于等于
  • < 小于
  • <= 小于等于
  • == 等于
  • !=  不等于

布尔值可参于逻辑与、逻辑或、逻辑否等运算,假设 xy  的返回结果是布尔值:

  • x && y   表示并且的关系,x 为真,并且 y 为真的情况下,结果为 true,否则 false。

  • x || y   表示或者的关系, x 为真,或者 y 为真,结果就为 true,两者都为假值的时候结果为 false。

  • !x否定运算符,如果 x 为 true,则结果为 false,反之则为 true。 &&|| 都支持短路规则

  • 如果 x为假值, x && y  直接返回 false, y 就不进行求值。

  • 如果 x为真值, x || y  直接返回 true, y 也不进行求值。

三元运算符

布尔值可用于三元表达式和条件语句作为判断,决定执行哪个分支代码。这里先介绍下三元表达式 test ? stmt1: stmt2,当 test的执行结果为 true 的时候,执行 stmt1,反之则执行 stmt2,结果即为 stmt1或者 stmt2 的执行结果:

let a = 3;
let b = 1;

let c = a > b ? println("a > b") : println("a <= b");

println(c);

将打印:

a > b
null