Ruby 运算符

运算符是执行对变量和值的操作的特殊符号。例如,

puts 5 + 6    # Output: 11

这里,+ 是一个运算符,它将两个数字:56 相加。


Ruby 运算符的类型

以下是我们将在此教程中学习的各种 Ruby 运算符的列表

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

算术运算符

算术运算符用于执行加法、减法、乘法等数学运算。例如:

mult = 2 * 5
puts mult    # Output: 10

这里,* 是一个算术运算符,用于将两个值 **2** 和 **5** 相乘。

一些常用的算术运算符是

运算符 操作 示例 结果
+ 加法 5 + 2 7
- 减法 4 - 2 2
* 乘法 2 * 3 6
/ 除法 4 / 2 2
% 取模 5 % 2 1
** 乘方 4 ** 2 16

示例 1:算术运算符

让我们通过一个示例来了解各种算术运算符是如何工作的。

a = 7
b = 2

# Addition
puts a + b    # Output: 9

# Subtraction
puts a - b    # Output: 5

# Multiplication
puts a * b    # Output: 14

# Division
# Ruby performs integer division when both values are integers.
# So,it returns only the whole number part.

puts a / b    # Output: 3

# Modulo
puts a % b    # Output: 1

# Exponentiation
puts a ** b    # Output: 49

赋值运算符

赋值运算符 = 用于将值赋给变量。例如,

# Assigns 5 to num
num = 5 
puts num

输出

5

在这里,我们使用 = 运算符将值 **5** 赋给了变量 num

Ruby 中一些常用的赋值运算符是

运算符 名称 示例
= 赋值运算符 a = 7
(a 的值为 **7**)
+= 加法赋值 a += 5
(相当于 a = a + 5)
-= 减法赋值 a -= 2
(相当于 a = a - 2)
*= 乘法赋值 a *= 3
(相当于 a = a * 3)
/= 除法赋值 a /= 2
(相当于 a = a / 2)
%= 余数赋值 a %= 4
(相当于 a = a % 4)
**= 乘方赋值 a **= 2
(相当于 a = a ** 2)

示例 2:赋值运算符

# Using Assignment Operator
num = 7

# Using Addition Assignment
num += 5
puts "After += 5: #{num}"  

# Using Subtraction Assignment
num -= 2
puts "After -= 2: #{num}"  

# Using Multiplication Assignment
num *= 3
puts "After *= 3: #{num}" 

# Using Division Assignment
num /= 2
puts "After /= 2: #{num}"  

# Using Remainder Assignment
num %= 4
puts "After %= 4: #{num}" 

# Using Exponentiation Assignment
num **= 2
puts "After **= 2: #{num}"  

输出

After += 5: 12
After -= 2: 10
After *= 3: 30
After /= 2: 15
After %= 4: 3
After **= 2: 9

在这里,每次赋值后,num 的值都会改变,并且新的值将在下一步中使用。


比较运算符

比较运算符比较两个值,并根据比较结果返回一个布尔值(truefalse)。例如,

a = 2
b = 5

# Checks if 'a' is less than 'b'
puts a <  b

# Output: true

在这里,我们使用了 **小于** (<) 比较运算符来比较 ab 的值。由于 **2** 小于 **5**,所以表达式 a < b 的结果为 true

一些常用的比较运算符是

运算符 名称 示例 结果
== 等于 3 == 5 false
!= 不等于 3 != 4 true
> 大于 4 > 4 false
< 小于 3 < 3 false
>= 大于或等于 4 >= 4 true
<= 小于或等于 3 <= 3 true
<=> 组合比较(返回 **-1**、**0** 或 **1**) 5 <=> 10 -1

示例 3:比较运算符

a = 5
b = 2

# Equal to operator
puts "#{a} == #{b} is #{a == b}"   

# Not equal to operator
puts "#{a} != #{b} is #{a != b}"   

# Greater than operator
puts "#{a} > #{b} is #{a > b}"     

# Less than operator
puts "#{a} < #{b} is #{a < b}"     

# Greater than or equal to operator
puts "#{a} >= #{b} is #{a >= b}"  

# Less than or equal to operator
puts "#{a} <= #{b} is #{a <= b}"   

# Combined comparison operator
puts "#{a} <=> #{b} is #{a <=> b}"

输出

5 == 2 is false
5 != 2 is true
5 > 2 is true
5 < 2 is false
5 >= 2 is true
5 <= 2 is false
5 <=> 2 is 1

逻辑运算符

逻辑运算符用于检查表达式是 true 还是 false。它们用于决策。例如,

a = 3
b = 6
puts (a > 2) && (b >= 6)    # Output:  true

在这里,我们使用了逻辑 **AND** 运算符 (&&)。由于 a > 2b >= 6 都为 true,所以结果为 true

常用的逻辑运算符是

运算符 语法 描述
&& (逻辑 AND) a && b 仅当 ab 都为 true 时返回 true
|| (逻辑 OR) a || b 如果 ab 中有一个为 true,则返回 true
! (逻辑 NOT) !a 如果 atrue,则返回 false,反之亦然。

示例 4:逻辑运算符

# Logical AND
has_password = true
has_username = true
can_login = has_password && has_username
puts "Can login: #{can_login}"   

# Logical OR
is_weekday = false
is_holiday = true
can_relax = is_weekday || is_holiday
puts "Can relax: #{can_relax}"  

# Logical NOT
is_busy = false
is_free = !is_busy
puts "Is free: #{is_free}"       

输出

Can login: true
Can relax: true
Is free: true

这里,

表达式 结果 原因
has_password && has_username true has_passwordhas_username 都为 true
is_weekday || is_holiday true is_weekdayfalse,但由于 is_holidaytrue,所以 **OR** 运算符返回 true
!is_busy true is_busyfalse,**NOT** 运算符将 false 转换为 true

位运算符

位运算符作用于操作数,就好像它们是二进制数字字符串一样。它们逐位操作,因此得名。

在下表中

a = **10**(二进制为 0000 1010)和 b = **4**(二进制为 0000 0100

运算符 语法 描述
& (按位与) a & b 0 (0000 0000)
复制 ab 中都为 1 的位
| (按位或) a | b 14 (0000 1110)
复制 ab 中任一个为 1 的位
~ (按位非) ~a -11 (1111 0101)
翻转 a 中的所有位
^ (按位异或) a ^ b 14 (0000 1110)
复制 ab 中只有一个为 1 的位
>> (按位右移) a >> 2 2 (0000 0010)
a 右移 2 位
<< (按位左移) a << 2 40 (0010 1000)
a 左移 2 位

注意:为清晰起见,二进制值以 **8 位** 格式显示。Ruby 使用任意精度整数,因此实际存储可能不同。


三元运算符

Ruby 中的三元运算符包含三个部分:**

  • 一个条件。
  • 如果条件为 true 要执行的表达式。
  • 如果条件为 false 要执行的另一个表达式。

三元运算符的语法是

condition ? Expression1 : Expression2

让我们来看一个三元运算符的简单示例。

age = 18
can_vote = age >= 18 ? "Yes, you can vote." : "No, you cannot vote."
puts can_vote 

输出

Yes, you can vote.

这里,

  • 条件: age >= 18 检查 age 是否 **18** 或更大。
  • 表达式1: 如果条件为 true,则返回 "Yes, you can vote."
  • 表达式2: 如果条件为 false,则返回 "No, you cannot vote."

特殊运算符

范围运算符

在 Ruby 中,范围运算符用于创建从起始点到终点的值的序列。有两种类型的范围运算符:

运算符 描述 示例
包含范围 (..) 包含结束值。 1..51, 2, 3, 4, 5
排除范围 (...) 排除结束值。 1...51, 2, 3, 4
点 (.) 运算符

点 (.) 运算符用于调用对象上的方法。例如,

greeting = "hello"
puts greeting.upcase   # Output: HELLO

在这里,.upcase 调用字符串 "hello" 上的 upcase 方法。

双冒号 (::) 运算符

双冒号 (::) 运算符用于访问定义在另一个模块或类中的常量、类或模块。例如,

puts Math::PI   # Output: 3.141592653589793
defined? 运算符

defined? 运算符检查变量、方法或常量是否存在。如果已定义,则返回一个字符串;如果未定义,则返回 nil。例如,

x = 10

puts defined? x       # Output: local-variable
puts defined? puts    # Output: method
puts defined? y       # Output: nil     

在 Ruby 中,如果 defined? 返回 nilputs 将不打印任何内容,因为没有要打印的内容。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战