Skip to content

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

🎯 语法要点总结

必须掌握的语法

  1. 变量命名: 使用蛇形命名法
  2. 字符串插值: 使用#{}在双引号字符串中插入变量
  3. 代码块: 使用do...end{}定义
  4. 方法调用: 不需要括号(可选)
  5. 返回值: 方法自动返回最后一个表达式的值

推荐的编码风格

  1. 缩进: 使用2个空格
  2. 行长度: 每行不超过80个字符
  3. 空行: 逻辑块之间使用空行分隔
  4. 注释: 为复杂逻辑添加注释

📚 下一步学习

掌握了Ruby基础语法后,建议继续学习:

继续您的Ruby学习之旅吧!

本站内容仅供学习和研究使用。