Julia语言程序设计
上QQ阅读APP看书,第一时间看更新

4.6 运算优先级

表达式中往往会同时使用多种运算符,还会有其他的各种限定符、操作符(例如有理数表达时的//符号,为了叙述方便,后文将所有可以进行计算或对计算进行控制的符号称为操作符)。在对这种表达式求值时,需要各种运算符、操作符有明确的先后执行顺序,即优先级。

Julia中包括运算符在内的各种常见操作符的优先级如表4-5所示(中文是其后操作符的分类说明)。

表4-5 Julia操作符优先级

表中的优先等级越大,则对应的操作符计算优先级越高,会优先执行。

Julia中的操作符非常丰富,表中列出的有些我们还没有详细介绍,将在后面进行学习。

提示 如果要获得Julia操作符的完整列表,可以查看其源代码中的src/julia-parser.scm文件,其中还有大量的Unicode操作符。

对于任意的操作符,可以通过内置的Base.operator_precedence()函数查看其优先等级。但因为操作符的特殊性,所以将其作为参数时,需要使用标识符:表达(即以Symbol类型提供,后面介绍),必要时还需要使用圆括号进行界定以避免歧义。例如:


julia> Base.operator_precedence(:+)
11

julia> Base.operator_precedence(:+=)
1

julia> Base.operator_precedence(:(=))
1

julia> Base.operator_precedence(:(::))
16

如果提供的操作符无效,该函数会返回0值。需要注意的是,其中的Base是Julia的模块名(后面介绍),不能省略。