Hello World #
一、第一个Ruby程序 #
让我们从经典的"Hello World"开始Ruby之旅!
1.1 最简单的方式 #
打开终端,输入:
bash
ruby -e 'puts "Hello, World!"'
输出:
text
Hello, World!
1.2 创建脚本文件 #
创建文件 hello.rb:
ruby
puts "Hello, World!"
运行脚本:
bash
ruby hello.rb
1.3 可执行脚本 #
创建文件 hello.rb:
ruby
#!/usr/bin/env ruby
# encoding: utf-8
puts "Hello, World!"
添加执行权限:
bash
chmod +x hello.rb
./hello.rb
二、交互式Ruby(irb) #
irb是Ruby的交互式解释器,非常适合学习和测试。
2.1 启动irb #
bash
irb
输出:
text
irb(main):001:0>
2.2 在irb中执行代码 #
ruby
irb(main):001:0> puts "Hello, World!"
Hello, World!
=> nil
irb(main):002:0> 1 + 2
=> 3
irb(main):003:0> "Ruby".upcase
=> "RUBY"
irb(main):004:0> [1, 2, 3].sum
=> 6
2.3 irb常用命令 #
| 命令 | 功能 |
|---|---|
exit 或 quit |
退出irb |
help |
查看帮助 |
irb_info |
显示irb配置信息 |
conf |
查看配置 |
load 'file.rb' |
加载文件 |
_ |
上一个表达式的结果 |
ruby
irb(main):001:0> 10 + 20
=> 30
irb(main):002:0> _
=> 30
irb(main):003:0> _ * 2
=> 60
2.4 irb配置 #
创建 ~/.irbrc 文件自定义irb:
ruby
require 'irb/completion'
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 1000
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history"
IRB.conf[:AUTO_INDENT] = true
IRB.conf[:USE_AUTOCOMPLETE] = true
def clear
system('clear')
end
def h(obj)
puts `ri #{obj}`
end
三、puts、print与p #
3.1 puts #
puts 输出字符串并换行:
ruby
puts "Hello"
puts "World"
输出:
text
Hello
World
puts 对数组有特殊处理:
ruby
puts [1, 2, 3]
输出:
text
1
2
3
3.2 print #
print 输出字符串不换行:
ruby
print "Hello"
print "World"
输出:
text
HelloWorld
3.3 p #
p 输出对象的inspect结果,适合调试:
ruby
p "Hello"
p [1, 2, 3]
p { a: 1, b: 2 }
输出:
text
"Hello"
[1, 2, 3]
{:a=>1, :b=>2}
3.4 对比 #
ruby
str = "Hello\nWorld"
puts str
print str
p str
输出:
text
Hello
World
Hello
World
"Hello\nWorld"
| 方法 | 换行 | 转义处理 | 适用场景 |
|---|---|---|---|
| puts | 是 | 解释转义 | 正常输出 |
| 否 | 解释转义 | 不换行输出 | |
| p | 是 | 显示转义 | 调试输出 |
四、获取用户输入 #
4.1 gets #
gets 从标准输入读取一行:
ruby
print "请输入你的名字: "
name = gets
puts "你好, #{name}"
运行:
text
请输入你的名字: Ruby
你好, Ruby
注意:gets 会包含换行符 \n。
4.2 chomp #
chomp 移除字符串末尾的换行符:
ruby
print "请输入你的名字: "
name = gets.chomp
puts "你好, #{name}!"
4.3 gets.chomp简写 #
ruby
name = gets.chomp
4.4 完整示例 #
ruby
#!/usr/bin/env ruby
# encoding: utf-8
puts "=== 简单计算器 ==="
print "请输入第一个数字: "
a = gets.chomp.to_f
print "请输入运算符 (+, -, *, /): "
op = gets.chomp
print "请输入第二个数字: "
b = gets.chomp.to_f
result = case op
when "+" then a + b
when "-" then a - b
when "*" then a * b
when "/" then a / b
else "未知运算符"
end
puts "结果: #{a} #{op} #{b} = #{result}"
五、命令行参数 #
5.1 ARGV #
ARGV 数组存储命令行参数:
ruby
puts "参数个数: #{ARGV.length}"
puts "参数列表: #{ARGV.join(', ')}"
ARGV.each_with_index do |arg, i|
puts "参数#{i}: #{arg}"
end
运行:
bash
ruby args.rb hello world 123
输出:
text
参数个数: 3
参数列表: hello, world, 123
参数0: hello
参数1: world
参数2: 123
5.2 参数处理示例 #
ruby
#!/usr/bin/env ruby
if ARGV.empty?
puts "用法: ruby greet.rb 名字1 名字2 ..."
exit 1
end
ARGV.each do |name|
puts "你好, #{name}!"
end
5.3 选项解析 #
使用 OptionParser 处理命令行选项:
ruby
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "用法: ruby app.rb [选项]"
opts.on("-n", "--name NAME", "指定名字") do |name|
options[:name] = name
end
opts.on("-v", "--verbose", "详细输出") do
options[:verbose] = true
end
opts.on("-h", "--help", "显示帮助") do
puts opts
exit
end
end.parse!
puts "名字: #{options[:name]}" if options[:name]
puts "详细模式" if options[:verbose]
六、退出程序 #
6.1 exit #
exit 正常退出程序:
ruby
if condition
exit
end
exit(0)
6.2 exit! #
exit! 立即退出,不执行ensure块:
ruby
exit!(1)
6.3 abort #
abort 打印错误信息并退出:
ruby
abort "发生错误,程序退出"
6.4 at_exit #
at_exit 注册程序退出时执行的代码:
ruby
at_exit do
puts "程序即将退出"
end
puts "程序运行中"
七、实践练习 #
7.1 练习1:问候程序 #
创建一个程序,询问用户姓名和年龄,输出问候语:
ruby
print "请输入你的姓名: "
name = gets.chomp
print "请输入你的年龄: "
age = gets.chomp.to_i
puts "你好, #{name}!你今年#{age}岁。"
puts "明年你将#{age + 1}岁。"
7.2 练习2:温度转换 #
创建一个温度转换程序:
ruby
print "请输入温度值: "
temp = gets.chomp.to_f
print "请输入单位 (C/F): "
unit = gets.chomp.upcase
case unit
when "C"
fahrenheit = temp * 9 / 5 + 32
puts "#{temp}°C = #{fahrenheit.round(2)}°F"
when "F"
celsius = (temp - 32) * 5 / 9
puts "#{temp}°F = #{celsius.round(2)}°C"
else
puts "未知单位"
end
7.3 练习3:猜数字游戏 #
ruby
target = rand(1..100)
guesses = 0
puts "猜数字游戏 (1-100)"
loop do
print "请输入你的猜测: "
guess = gets.chomp.to_i
guesses += 1
if guess == target
puts "恭喜你猜对了!用了#{guesses}次"
break
elsif guess < target
puts "太小了,再试试"
else
puts "太大了,再试试"
end
end
八、调试技巧 #
8.1 使用p调试 #
ruby
def calculate(a, b)
p a: a, b: b
result = a * b
p result: result
result
end
8.2 使用pp #
pp 格式化输出:
ruby
require 'pp'
data = {
users: [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 }
]
}
pp data
8.3 使用binding.irb #
Ruby 2.5+ 内置调试断点:
ruby
def complex_method(data)
processed = data.map { |x| x * 2 }
binding.irb
processed.sum
end
程序会在 binding.irb 处暂停,进入irb环境,可以检查变量。
8.4 使用byebug gem #
bash
gem install byebug
ruby
require 'byebug'
def debug_method
x = 10
byebug
y = x * 2
y
end
九、总结 #
本章我们学习了:
- 运行Ruby程序:使用
ruby命令运行脚本 - irb交互式环境:实时测试Ruby代码
- 输出方法:puts、print、p的区别
- 用户输入:gets和chomp
- 命令行参数:ARGV数组
- 调试技巧:p、pp、binding.irb
现在你已经能够编写简单的Ruby程序了!接下来让我们学习Ruby的数据类型。
最后更新:2026-03-27