# 运算符与记号


符号 含义
@ @ 符号标记宏调用;可选后跟参数列表
! 感叹号是一个表示逻辑否定的前缀算符
a! 以感叹号结尾的函数名按约定会修改其一个或多个参数
# 井号(或哈希符号)字符开始单行注释
#= 后跟等号时,开始多行注释(这些注释可以嵌套)
=# 在井号前紧跟等号时,结束多行注释
$ 美元符号用于字符串和表达式插值
% 百分号是求余运算符
^ 脱字符是幂运算符
& 单个与符号是按位与运算符
&& 双与符号是短路布尔与运算符
\| 单个管道符号是按位或运算符
\|\| 双管道符号是短路布尔或运算符
Unicode 异或符号是按位异或运算符
~ 波浪号是按位非运算符
' 尾随的撇号是 adjoint(即复共轭转置)运算符 Aᴴ
* 星号用于乘法,包括矩阵乘法和字符串连接
/ 正斜杠将左边的参数除以右边的参数
\ 反斜杠运算符将右边的参数除以左边的参数,通常用于求解矩阵方程
() 无参数的圆括号构造一个空的 Tuple
(a,...) 带有逗号分隔参数的圆括号构造一个包含其参数的元组
(a=1,...) 带有逗号分隔赋值的圆括号构造一个 NamedTuple
(x;y) 圆括号也可以用于分组一个或多个分号分隔的表达式
a[] 数组索引(调用 getindexsetindex!
[,] 向量字面量构造器(调用 vect
[;] 垂直连接(调用 vcathvcat
[ ] 带空格分隔的表达式,水平连接(调用 hcathvcat
T{ } 跟在类型后的花括号列出该类型的参数
{} 花括号也可以用于在函数声明中分组多个 where 表达式
; 分号分隔语句,开始函数声明或调用中的关键字参数列表,或用于分隔数组字面量以进行垂直连接
, 逗号分隔函数参数或元组或数组组件
? 问号界定三元条件运算符(使用方式:条件 ? 为真时 : 为假 时)
" " 单个双引号字符界定 String 字面量
""" """ 三个双引号字符界定可以包含 " 且忽略前导缩进的字符串字面量
' ' 单引号字符界定 Char(即字符)字面量
` ` 反引号字符界定 外部进程(Cmd)字面量
A... 三个句点是一个后缀运算符,将其参数的内容"展开"为函数调用的多个参数,或声明一个可变参数函数,将多个参数"吸收"为单个元组
a.b 单个句点访问对象/模块中的命名字段(调用 getpropertysetproperty!
f.() 句点也可以前缀圆括号(如 f.(...) )或中缀运算符(如 .+)以按元素执行函数(调用 broadcast
a:b 冒号(:)用作二元中缀运算符,构造从 ab(包含)的固定步长为 1 的范围
a:s:b 冒号(:)用作三元中缀运算符,构造从 ab(包含)的步长为 s 的范围
: 单独使用时,Colon 表示维度内的所有索引,经常与索引组合使用
:: 双冒号表示类型注解或 typeassert,取决于上下文,经常用于声明函数参数
:( ) 引用的表达式
:a 符号 Symbol a
<: 子类型运算符
>: 超类型运算符(子类型运算符的反向)
= 单个等号是赋值
== 双等号是值相等比较
=== 三等号是程序上完全相同的相等比较
=> 使用等号的右箭头定义一个 Pair,通常用于填充字典
-> 使用连字符的右箭头在单行上定义一个匿名函数
\|> 管道运算符将左参数的输出传递给右参数的输入,通常是一个函数
函数组合运算符(用 \circ{tab} 输入)将两个函数组合成一个更大的函数
_ 下划线可以赋值但不会保存,通常用于忽略多返回值或创建重复的推导式