ESS多版本 【ESS进阶】第一章:变量和运算符(下)

ES泽洛

世末鸽者
2022/08/04
280
16
307
2,144
24
江苏
www.esplus.club

第3节:Ruby运算符

运算符顾名思义,就是参与运算的符号,Ruby支持一套丰富的运算符。

算术运算符

算术运算符包括加+减-乘*除/以及取模%、幂运算**。

假设变量a的值是6,变量b的值是2,变量c的值是4,那么:

a + b的值就是8,a - b的值是4,a * b的值是12,a / b的值是3。
不过要注意一点的是,此处因为6刚好可以整除2,所以a / b的结果为3,而如果换成a / c,值是1.5吗?不是,是1。
除数和被除数都是整型的情况下,商会按整除计算。而如果a是浮点型6.0或者c是浮点型4.0或者两者都是浮点型,那么a / c才是1.5。

取模%符号,并不代表百分号,它的作用是求余数,比如在数学中6÷4=1......2,所以a % c的值是2,a % b结果就是0。

一个*是乘,两个*就是幂运算**,a ** b就是a的b次方36,a ** c就是a的c次方1296。
 

ES泽洛

世末鸽者
2022/08/04
280
16
307
2,144
24
江苏
www.esplus.club

比较运算符

比较运算符,当然是针对两个变量的比较时使用的,比较运算符也可以称为关系运算符。
而两个变量之间的关系,大致也就等于==、不等于!=、大于>、小于<、大于等于>=、小于等于<=之类的,这类比较运算符的结果是true或者false。

假设变量a的值是6,变量b的值也是6。
判断a是否等于b,6 == 6,是真的相等,所以结果是true。
判断a是否不等于b,6 != 6,结果是false;
判断a是否大于b,6 > 6,结果是false;
判断a是否小于b,6 < 6,结果是false。
大于等于和小于等于,它们的含义是大/小于或者等于的其中一个结果是true那最终结果就是true。
例如判断a是否大于等于b,6 >= 6,只要6 > 6或者6 == 6其中一个结果是true就行,所以结果是true;
判断a是否小于等于b,6 <= 6,只要6 < 6或者6 == 6其中一个结果是true就行,所以结果是true。

还有几个特殊的比较运算符:
<=>联合比较运算符,左边的数等于右边的数结果是0,左边的数小于右边的数结果是-1,左边的数大于右边的数结果是1;
===用于测试case语句的when子句内的相等,应该遇不到,不过要注意它不是其他语言中的恒等于(类型和值都相等)。

eqls?equals?我个人不太愿意把它们放到运算符里。
 

ES泽洛

世末鸽者
2022/08/04
280
16
307
2,144
24
江苏
www.esplus.club

赋值运算符

上面我们判断相等时用的是==符号,那么为什么不直接用一个=符号呢?因为一个=是赋值运算符,我们在之前的变量小节也强调过。
=:最简单的赋值运算符,例如a = 3,并不是a等于3,而是a赋值于3,换句话说就是把3赋值给变量a,那么a就是3;
+=:加且赋值,例如a += 3,等价于a = a + 3,意思是把3加到a上去,如果原来a就是3,那么在这之后a就是6;
-=:减且赋值,例如a -= 2,等价于a = a - 2,意思是从a中减去2,如果原来a是6,那么在这之后a就是4。
*=:乘且赋值,a *= b等价于a = a * b;
/=:除且赋值,a /= b等价于a = a / b;
%=:取模且赋值,a %= b等价于a = a % b;
**=:幂运算且赋值,a **= b等价于a = a ** b。

以上我们都会在式子的符号两端加上空格,这只是一种为了美观的行为,不影响代码的实际作用,不过要注意的是,运算符是一个整体,中间不能加空格,例如+=不能写成+ =

除此之外,Ruby也支持变量的并行赋值,例如:

Ruby:
a = 2
b = 4
c = 6
可以写成
Ruby:
a, b, c = 2, 4, 6
 
  • Like
反馈: 肯德鸭V

在线成员

现在没有成员在线。

最新帖子

论坛统计

主题
517
消息
2,352
成员
3,007
最新成员
ZQLdw