Scala 系列 - 标识符与操作符

本章主要操作符的相关概念以及实现自己的操作符的方法


标识符

变量,函数和类等的名称统称为标识符

在 Python 中,标识符都是字母和数字字符的序列,以字母或者下划线开头。

Scala 可以使用 Unicode 字符,例如如下定义都是合法的

val ** = 1
val ∮ = 2

再例如我们都知道的1->2表达式,相当于1.->(2),方法名为->

以下面的代码为例,我们如果在自己定义的类上想直接使用+操作符的话,可以直接定义一个名为+的方法,而不需要像Python那样进行运算符重载。

class MyInteger(x: Int){
    val number = x

    def - (y: MyInteger) = number - y.number

    def + (y: MyInteger) = number + y.number

    // 定义一元操作符
    def unary_- = -number
}
// 中置表达式
println(a.-(b))
// 等价于
println(a-b)
print(-a)

操作符优先级

那么在 Scala 中,不管是系统自带的操作符(方法)还是用户自定义的方法,优先级是如何决定的呢?

除赋值操作符以外,优先级由方法的第一个字符决定,字符优先级如下表所示(降序)。也就是说虽然*=是由*开头的,但是因为它是赋值操作符,所以它的优先级依然排在最后。
在这里插入图片描述

操作符结合性

当操作符优先级相同时,结合性决定了是从左向右求值还是从右向左求值。

在 Scala 中,除了以 冒号结尾的操作符 和 赋值操作符,所有的操作符都是左结合的。

参考资料:
《快学Scala》
《Scala编程》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值