Skip to content

💎 Ruby

概述:Ruby 是由松本行弘(Matz)于 1995 年发布的动态面向对象编程语言,设计理念是"让程序员快乐"。Ruby 以优雅的语法和强大的元编程能力著称,Ruby on Rails 框架更是开创了 Web 开发的新时代。

概述

Ruby 属于 脚本 & 运维语言 分类。Ruby 的设计哲学强调"人性化"——程序首先是写给人看的,其次才是给机器执行的。

语言特点

  • 一切皆对象:包括数字、nil、true/false 都是对象
  • 优雅语法:大量语法糖,代码可读性极高
  • 元编程:强大的动态特性,可以在运行时修改类和方法
  • 块(Block):Ruby 独特的闭包机制,是函数式编程的基础
  • 开发者幸福:Matz 的设计理念是让编程变得愉悦

Hello World

ruby
puts "Hello, World!"

基础语法

变量与数据类型

ruby
# 动态类型,无需声明类型
age = 25
name = "Ruby"
price = 99.99
is_active = true

# 符号(Symbol)
status = :active

# 一切皆对象
5.class        # => Integer
"hello".class  # => String
nil.class      # => NilClass

# 字符串插值
greeting = "Hello, #{name}!"

# 数组
fruits = ["Apple", "Banana", "Cherry"]

# 哈希
person = { name: "Alice", age: 30 }
# 等同于
person = { :name => "Alice", :age => 30 }

控制流

ruby
# if-elsif-else
if age >= 18
  puts "成年人"
elsif age >= 12
  puts "青少年"
else
  puts "儿童"
end

# 修饰符形式
puts "成年人" if age >= 18

# unless(除非)
unless stopped
  keep_going
end

# case
case status
when :active   then puts "活跃"
when :inactive then puts "不活跃"
else puts "未知"
end

# 循环
5.times { |i| puts i }
(1..10).each { |i| puts i }
fruits.each { |fruit| puts fruit }

# while
while condition
  # ...
end

块与迭代器

ruby
# 块(Block)
[1, 2, 3].each do |num|
  puts num * 2
end

# 单行块
[1, 2, 3].map { |n| n ** 2 }  # => [1, 4, 9]

# 常用迭代器
numbers = [1, 2, 3, 4, 5]
numbers.select { |n| n.even? }     # => [2, 4]
numbers.reject { |n| n.even? }     # => [1, 3, 5]
numbers.reduce { |sum, n| sum + n } # => 15
numbers.any? { |n| n > 3 }        # => true
numbers.all? { |n| n > 0 }        # => true

方法与类

ruby
# 方法定义
def greet(name = "World")
  "Hello, #{name}!"
end

# 类
class Animal
  attr_accessor :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end

  def speak
    "#{@name} makes a sound"
  end
end

# 继承
class Dog < Animal
  def speak
    "#{@name} says: Woof!"
  end
end

dog = Dog.new("Buddy", 3)
dog.speak  # => "Buddy says: Woof!"

元编程

ruby
# 动态定义方法
class Person
  %i[name age email].each do |attr|
    define_method(attr) { instance_variable_get("@#{attr}") }
    define_method("#{attr}=") { |val| instance_variable_set("@#{attr}", val) }
  end
end

# method_missing
class Proxy
  def method_missing(name, *args)
    puts "Called: #{name}(#{args.join(', ')})"
  end
end

应用领域

  • Web 开发:Ruby on Rails 全栈框架
  • 自动化测试:Capybara、RSpec 测试框架
  • DevOps:Chef 配置管理、Vagrant 虚拟化
  • 脚本工具:Homebrew 包管理器
  • 数据处理:数据清洗和 ETL 脚本
  • 静态网站:Jekyll 博客生成器

开发环境搭建

  1. 安装 rbenv:curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
  2. 安装 Ruby:rbenv install 3.3.0 && rbenv global 3.3.0
  3. 验证:ruby --version
  4. 包管理器:Bundler (bundle install)
  5. 编辑器:VS Code + Ruby 扩展、RubyMine

学习路线

  1. 入门阶段:基础语法 → 面向对象 → 块和迭代器
  2. 进阶阶段:元编程 → 模块和混入 → 异常处理
  3. 实战阶段:Ruby on Rails → 测试框架 → API 开发
  4. 高级阶段:性能优化 → 并发编程 → 开源贡献

返回首页 | 查看所有语言

编程语言技术文档