Ruby 基础语法
Ruby语法简洁优雅,易于学习和使用。本章将介绍Ruby的基本语法规则,包括代码结构、注释、变量命名等基础知识。
📝 Ruby代码结构
程序入口
Ruby程序从上到下顺序执行,不需要特定的入口函数:
ruby
# 简单的Ruby程序
puts "Hello, World!"
puts "这是我的第一个Ruby程序"
# 输出:
# Hello, World!
# 这是我的第一个Ruby程序语句分隔符
Ruby语句不需要分号结尾,换行即为语句分隔符:
ruby
# 正确的写法
name = "张三"
age = 25
puts name
puts age
# 也可以使用分号分隔(不推荐)
name = "李四"; age = 30; puts name; puts age代码块
Ruby使用关键字do...end或花括号{}来定义代码块:
ruby
# 使用do...end
5.times do
puts "Hello"
end
# 使用花括号(单行代码块)
5.times { puts "Hello" }
# 带参数的代码块
[1, 2, 3, 4, 5].each do |number|
puts "数字: #{number}"
end💬 注释
单行注释
使用#符号添加单行注释:
ruby
# 这是一个单行注释
puts "Hello, World!" # 这也是注释
# 计算两个数的和
sum = 5 + 3 # 5加3等于8多行注释
使用=begin和=end包围多行注释:
ruby
=begin
这是一个多行注释
可以包含多行内容
用于详细说明代码功能
=end
puts "Hello, World!"🏷️ 命名约定
变量命名
Ruby使用蛇形命名法(snake_case):
ruby
# 正确的变量命名
first_name = "张"
last_name = "三"
full_name = first_name + last_name
user_age = 25
is_student = true
# 不推荐的命名
firstName = "张" # 驼峰命名法(JavaScript风格)
FirstName = "张" # 帕斯卡命名法(不适用于变量)常量命名
常量使用大写字母和下划线:
ruby
# 常量命名
PI = 3.14159
MAX_SIZE = 100
DEFAULT_NAME = "匿名用户"
# 类名使用帕斯卡命名法
class UserAccount
# 类相关代码
end方法命名
方法名使用蛇形命名法,以?结尾表示返回布尔值,以!结尾表示危险操作:
ruby
# 普通方法
def calculate_sum(a, b)
a + b
end
# 返回布尔值的方法
def is_adult?(age)
age >= 18
end
# 危险操作方法(可能修改原对象)
def remove_user!
# 删除用户的代码
end🔤 字符串和输出
字符串定义
Ruby支持多种字符串定义方式:
ruby
# 单引号字符串(不解析转义字符和插值)
name = '张三'
message = 'Hello\nWorld' # \n不会被解析为换行符
# 双引号字符串(解析转义字符和插值)
name = "李四"
age = 25
message = "你好, #{name}! 你今年#{age}岁了。"
greeting = "Hello\nWorld" # \n会被解析为换行符
# 多行字符串
poem = <<~TEXT
静夜思
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
TEXT输出语句
ruby
# puts - 输出并换行
puts "Hello, World!"
puts "Ruby", "Programming" # 可以输出多个值
# print - 输出不换行
print "Hello, "
print "World!\n"
# p - 输出对象的调试信息
p "Hello, World!" # 输出: "Hello, World!"
arr = [1, 2, 3]
p arr # 输出: [1, 2, 3]🧮 表达式和运算符
基本运算符
ruby
# 算术运算符
result = 10 + 5 # 加法: 15
result = 10 - 5 # 减法: 5
result = 10 * 5 # 乘法: 50
result = 10 / 5 # 除法: 2
result = 10 % 3 # 取模: 1
result = 2 ** 3 # 幂运算: 8
# 比较运算符
result = 10 > 5 # 大于: true
result = 10 < 5 # 小于: false
result = 10 >= 5 # 大于等于: true
result = 10 <= 5 # 小于等于: false
result = 10 == 5 # 等于: false
result = 10 != 5 # 不等于: true
# 逻辑运算符
result = true && false # 与: false
result = true || false # 或: true
result = !true # 非: false赋值运算符
ruby
# 基本赋值
x = 10
# 复合赋值
x += 5 # 等同于 x = x + 5
x -= 3 # 等同于 x = x - 3
x *= 2 # 等同于 x = x * 2
x /= 4 # 等同于 x = x / 4
x %= 3 # 等同于 x = x % 3🔄 控制结构基础
条件语句
ruby
# if语句
age = 18
if age >= 18
puts "你已经成年了"
end
# if-else语句
if age >= 18
puts "成年人"
else
puts "未成年人"
end
# if-elsif-else语句
if age < 13
puts "儿童"
elsif age < 18
puts "青少年"
else
puts "成年人"
end循环语句
ruby
# while循环
counter = 0
while counter < 5
puts "计数: #{counter}"
counter += 1
end
# for循环
for i in 1..5
puts "数字: #{i}"
end
# each迭代器(推荐)
(1..5).each do |i|
puts "数字: #{i}"
end📦 数据结构基础
数组
ruby
# 创建数组
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
# 访问数组元素
first_fruit = fruits[0] # "苹果"
last_number = numbers[-1] # 5
# 数组操作
fruits.push("葡萄") # 添加元素
fruits << "草莓" # 添加元素(简写)
fruits.pop # 移除最后一个元素哈希
ruby
# 创建哈希
person = {
"name" => "张三",
"age" => 25,
"city" => "北京"
}
# 符号作为键(推荐)
person = {
name: "张三",
age: 25,
city: "北京"
}
# 访问哈希值
name = person[:name] # "张三"
age = person[:age] # 25
# 修改哈希
person[:age] = 26
person[:job] = "程序员"🎯 方法定义
基本方法
ruby
# 无参数方法
def greet
puts "你好!"
end
# 有参数方法
def greet_person(name)
puts "你好, #{name}!"
end
# 有默认参数的方法
def greet_with_default(name = "朋友")
puts "你好, #{name}!"
end
# 调用方法
greet
greet_person("李四")
greet_with_default
greet_with_default("王五")返回值
ruby
# 显式返回
def add(a, b)
return a + b
end
# 隐式返回(返回最后一个表达式的值)
def multiply(a, b)
a * b # 自动返回结果
end
# 多值返回
def get_name_and_age
["张三", 25]
end
name, age = get_name_and_age🧱 类和对象基础
简单类定义
ruby
# 定义类
class Person
# 构造方法
def initialize(name, age)
@name = name # 实例变量
@age = age
end
# 实例方法
def introduce
puts "我是#{@name},今年#{@age}岁"
end
end
# 创建对象
person = Person.new("张三", 25)
person.introduce # 输出: 我是张三,今年25岁🔧 实用技巧
并行赋值
ruby
# 交换变量值
a, b = 1, 2
a, b = b, a # a=2, b=1
# 多重赋值
x, y, z = 10, 20, 30
# 数组解构
first, *rest = [1, 2, 3, 4, 5]
# first = 1, rest = [2, 3, 4, 5]条件赋值
ruby
# 仅当变量未定义时赋值
name ||= "默认名称"
# 三元运算符
status = age >= 18 ? "成年人" : "未成年人"📝 实践示例
简单计算器
ruby
class Calculator
def add(a, b)
a + b
end
def subtract(a, b)
a - b
end
def multiply(a, b)
a * b
end
def divide(a, b)
if b == 0
puts "错误: 除数不能为零"
return nil
end
a / b
end
end
# 使用计算器
calc = Calculator.new
puts "10 + 5 = #{calc.add(10, 5)}"
puts "10 - 5 = #{calc.subtract(10, 5)}"
puts "10 * 5 = #{calc.multiply(10, 5)}"
puts "10 / 5 = #{calc.divide(10, 5)}"用户信息管理
ruby
class UserManager
def initialize
@users = []
end
def add_user(name, age)
user = {
name: name,
age: age,
id: @users.length + 1
}
@users.push(user)
puts "用户 #{name} 已添加"
end
def list_users
if @users.empty?
puts "暂无用户"
return
end
puts "用户列表:"
@users.each do |user|
puts "ID: #{user[:id]}, 姓名: #{user[:name]}, 年龄: #{user[:age]}"
end
end
end
# 使用用户管理器
manager = UserManager.new
manager.add_user("张三", 25)
manager.add_user("李四", 30)
manager.list_users🎯 语法要点总结
必须掌握的语法
- 变量命名: 使用蛇形命名法
- 字符串插值: 使用
#{}在双引号字符串中插入变量 - 代码块: 使用
do...end或{}定义 - 方法调用: 不需要括号(可选)
- 返回值: 方法自动返回最后一个表达式的值
推荐的编码风格
- 缩进: 使用2个空格
- 行长度: 每行不超过80个字符
- 空行: 逻辑块之间使用空行分隔
- 注释: 为复杂逻辑添加注释
📚 下一步学习
掌握了Ruby基础语法后,建议继续学习:
继续您的Ruby学习之旅吧!