Ruby 零基础教程

Ruby IRB

IRB(Interactive Ruby Shell,交互式 Ruby Shell)是 Ruby 开发者不可或缺的利器。它提供了一个交互式的环境,让你能执行 Ruby 代码片段、实验不同的命令,并快速验证你的想法。

它是学习 Ruby、调试程序以及实时探索语言特性的绝佳途径。IRB 能对你的代码提供即时反馈,让学习过程变得更加高效和有趣。你可以把它想象成一个数字化的 Ruby 游乐场,在这里你可以自由探索,发现这门语言的魔力。

1. 启动 IRB

IRB 是随 Ruby 一起安装的,因此你不需要额外安装任何东西。要启动 IRB,只需打开你的终端或命令提示符,输入 irb,然后按下回车键。

你应该会看到类似 irb(main):001:0> 的提示符。这表明 IRB 已经准备好接收你的 Ruby 命令了。

2. 基础用法与退出

让我们来尝试一些简单的 Ruby 代码:

irb(main):001:0> 1 + 1
=> 2

irb(main):002:0> puts "Hello, IRB!"
Hello, IRB!
=> nil

irb(main):003:0> x = 5
=> 5

irb(main):004:0> x * 2
=> 10

如你所见,IRB 会在你输入每一行代码后立即执行并显示结果。

  • puts 将字符串打印到控制台,然后返回 nil(Ruby 中的空值)。
  • 当我们把 5 赋值给变量 x 时,IRB 显示了被赋的值。
  • 最后,我们将 x 乘以 2,IRB 返回了结果 10

如何退出 IRB?
要退出 IRB,你可以输入 exit 或者按下 Ctrl + D (在大多数系统上),然后按下回车键。这会让你回到常规的终端界面。

3. IRB 的核心功能

IRB 提供了一些让它成为强大开发工具的特性。

3.1 命令历史记录 (Command History)

IRB 会保存你输入过的命令历史。你可以使用键盘上的上、下方向键来浏览你的命令历史记录,这让你能轻松地复用或修改之前的命令。

3.2 自动补全 (Autocompletion)

IRB 支持自动补全,这能为你节省大量打字时间,并帮助你发现可用的方法。只需输入几个字符,然后按下 Tab 键

  • 如果只有一个匹配项,IRB 会自动补全该单词。
  • 如果有多个可能性,IRB 会显示一个选项列表。
irb(main):008:0> str. # 输入 'str.' 然后按 Tab 键
# IRB 会显示字符串所有可用的方法列表,例如:
# strip  split  slice  size  sort  ...

irb(main):009:0> str.up # 输入 'str.up' 然后按 Tab 键
irb(main):010:0> str.upcase # IRB 自动补全为 upcase

3.3 检查对象 (Inspecting Objects)

你可以使用 IRB 来检查对象,探索它们的属性和方法。这在处理不熟悉的代码或库时特别有用。使用 .methods 可以查看一个对象支持的所有操作。

irb(main):011:0> "hello".methods
=> [:unicode_normalize, :count, :partition, :bytesize, :upcase, :downcase, :capitalize, :split, :reverse, ...] # (此处省略了大量输出)

这会显示字符串对象 "hello" 所有可用的方法列表。这个列表非常长,包含许多你目前可能还不认识的方法。随着你学习的深入,这种检查对象的方法会变得越来越实用。

3.4 加载外部文件 (Loading Files)

你可以使用 load 命令将 Ruby 文件加载到 IRB 中。这允许你在 IRB 环境中执行文件中定义的代码并与之交互。

假设你创建了一个名为 my_script.rb 的文件,内容如下:

# my_script.rb 的内容
puts "这是我的脚本!"
def greet(name)
  puts "你好,#{name}!"
end

在 IRB 中操作:

irb(main):012:0> load "my_script.rb"
这是我的脚本!
=> true

irb(main):013:0> greet("Alice")
你好,Alice!
=> nil

在这里,load 命令执行了 my_script.rb 中的代码,打印出了文本。文件中定义的 greet 方法现在也可以在当前的 IRB 会话中使用了。

3.5 将 IRB 当作计算器

IRB 也是一个非常方便的计算器。试试这些例子:

irb(main):014:0> 2 * 3 + 4
=> 10

irb(main):015:0> 10 / 3
=> 3  # 注意:两个整数相除,结果会被向下取整

irb(main):016:0> 10.0 / 3
=> 3.3333333333333335 # 包含浮点数时,结果也是浮点数

irb(main):017:0> 2 ** 8 # 2 的 8 次方
=> 256

irb(main):018:0> Math.sqrt(16) # 计算平方根
=> 4.0

注意Math 模块为你提供了访问高级数学函数的途径。

4. IRB 与运行 Ruby 脚本的对比

理解使用 IRB 和从文件中运行 Ruby 脚本之间的区别非常重要。

特性IRB (交互式环境)Ruby 脚本 (文件执行)
执行方式交互式,逐行执行一次性执行整个文件
反馈速度立即响应需运行完整脚本后查看输出
适用场景快速测试、探索语法、代码调试构建应用程序、编写复杂逻辑
代码保存关闭后代码即丢失 (除非手动复制)代码持久保存在文件中
错误处理错误立即显示,不影响后续输入错误可能导致脚本终止执行

简而言之: IRB 非常适合实验和学习,而运行 Ruby 脚本则是创建完整程序的必经之路。