概述

名字

运算符

例子

优先级

元数

运算数据类型

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; not [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;
3

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

$ add(x,y);
3

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

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

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