运算符

运算符是表达式的两个基本构建元素之一(另一个基本元素是上一章讨论的对象)。作用于单个对象的运算符称为一元运算符;作用于两个对象的运算符被称为二元运算符。DolphinDB支持许多类型的基本运算符,包括算术运算符、布尔运算符、关系运算符、成员运算符等。此外,所有具有一个或两个参数的内置函数或用户定义函数,都可以写成一元或二元运算符的形式。

运算符一览

名字 运算符 例子 优先级 元数 运算数据类型
or || 1||0; [2,3]|| [4,5]; 0||[4,5] 1 binary A, V, S, M
and && 1&&0; [2,3]&&[4,5]; 2 binary A, V, S, M
lt < 1<2; [2,3]<[4,5]; 2<[4,5]; 2<4 5 3 binary A, V, S, M
le <= 1<=2; [2,3]<=[4,5]; 2<=[4,5]; 2<4 5 3 binary A, V, S, M
equal == 1==2; [2,3]==[4,5];2==4 5 3 binary A, V, S, M
gt > 1>2; [2,3]>[4,5]; 2>4 5 3 binary A, V, S, M
ge >= 2>=1; [2,3]>=[4,5]; 2>=4 5 3 binary A, V, S, M
ne != 或 <> 1!=2; [2,3]!=[2,5]; 2!=4 5; 2<>5 3 binary A, V, S, M
bitOr (union) | 0 | 1 4 binary A, V, S, M
bitXor ^ 0 | 1 5 binary A, V, S, M
bitAnd (intersection) & 0 & 1 6 binary A, V, S, M
lshift << 1<<2 7 binary A, V, M
rshift >> 10>>2 7 binary A, V, M
add + 1+2; [1,2]+[3,4] 8 binary A, V, S, M
sub - 1-2; [3,4]-[1,2]; 5-[3,4] 8 binary A, V, S, M
mul * 2*3; [1,2]*[3,4]; 3*[4,5,6] 10 binary A, V, S, M
dot ** [1,2]**[3,4] 10 binary V, M
div / 2/3; 2.0/3; [2,3,4]/2 10 binary A, V, M
ratio \ 1\2; [2,3,4]\2 10 binary A, V, M
mod % 1%2; [2,3,4]%2 10 binary A, V, M
cast $ 1..8$4:2; cast(1..8, 4:2); cast(1.1,`int) 10 binary A, V, M
join <- 1 2 3 <- 4 10 binary A, V, M, T
pair : 1:3; 15 binary A
seq .. 5..9, 9..5; 15 binary A
not ! !0; ! 3 4 0; 18 unary A, V, M
neg - -x; - 4 5 6; 18 unary A, V, M
at [] x[0], x[3 5 6], x[2,3], x[1:2,4:3] 20 binary V, M, T, D
member . x.price, d.2 20 binary T, D
function operator () x(1, 2) 20 binary A, V
注: 在运算数据类型列中,符号A, V, S, M, D, T分别表示标量,向量,集合,矩阵,字典和表。

运算符使用示例

运算符用于连接表达式中的运算数。我们选择常用的符号来表示各种操作。为了方便记住运算符,我们给每个运算符定义一个名字。运算符的名称可以在任何表达式中使用。下面以"+"为例。

x=1;
y=2;

// 运算符 "+"
x+y;
// output
3

// 函数作为运算符
x add y;
// output
3

add(x,y);
// output
3

// 函数写成面向对象的形式
x.add(y);
// output
3

在调用用户定义函数时,函数也可以写成运算符的形式。这样的函数的参数值不能被修改。

def f(a, b){return a*a + b*b - 2*a*b};
3 f 4;
// output
1