当前位置: 首页 > news >正文

ruby基础语法

以下是 Ruby 基础语法的简明总结,适合快速入门:


一、变量与常量

  1. 局部变量
    小写字母或下划线开头,作用域为当前代码块。

    name = "Alice"
    _age = 20
    
  2. 实例变量
    @ 开头,属于对象实例。

    @name = "Bob"
    
  3. 类变量
    @@ 开头,属于整个类。

    @@count = 0
    
  4. 全局变量
    $ 开头,作用域全局。

    $debug_mode = true
    
  5. 常量
    全大写字母,约定不可修改(修改会警告)。

    PI = 3.14159
    

二、数据类型

  1. 字符串(String)
    单引号(不转义)或双引号(支持转义和插值)。

    str1 = 'Hello \n World'  # 输出换行符
    str2 = "Hello #{name}"   # 插值:Hello Alice
    
  2. 符号(Symbol)
    轻量级字符串,以 : 开头,常用于哈希键。

    :user_id
    
  3. 数组(Array)
    有序集合,通过索引访问。

    nums = [1, 2, 3]
    nums[0]  # => 1
    
  4. 哈希(Hash)
    键值对集合,键可以是任意对象。

    person = { name: "Alice", age: 20 }
    person[:name]  # => "Alice"
    
  5. 范围(Range)
    表示连续区间,常用于迭代。

    (1..5).each { |n| puts n }  # 1到5
    (1...5).each { |n| puts n } # 1到4
    

三、运算符

  1. 算术运算符
    +, -, *, /, %, **(幂运算)。

    2 ** 3  # => 8
    10 % 3  # => 1
    
  2. 比较运算符
    ==, !=, >, <, >=, <=, <=>(返回 -1, 0, 1)。

    5 <=> 3  # => 1(5 > 3)
    
  3. 逻辑运算符
    &&, ||, !(也可用 and, or, not,但优先级不同)。

    true && false  # => false
    
  4. 赋值运算符
    =, +=, -=, *=, /=, %=

    x = 5
    x += 3  # => 8
    

四、控制结构

  1. 条件判断

    # if/elsif/else
    if age >= 18
      puts "Adult"
    elsif age > 0
      puts "Child"
    else
      puts "Invalid"
    end
    
    # 三元运算符
    result = (score > 60) ? "Pass" : "Fail"
    
  2. 循环

    # while 循环
    i = 0
    while i < 3
      puts i
      i += 1
    end
    
    # until 循环
    until i >= 3
      puts i
      i += 1
    end
    
    # for 循环(较少使用)
    for num in [1, 2, 3]
      puts num
    end
    
  3. 迭代器

    # each 方法
    (1..3).each { |n| puts n }
    
    # map 方法
    doubled = [1, 2, 3].map { |n| n * 2 }  # => [2, 4, 6]
    

五、方法定义

  1. 基本语法

    def greet(name)
      "Hello, #{name}!"
    end
    greet("Ruby")  # => "Hello, Ruby!"
    
  2. 默认参数

    def add(a, b = 1)
      a + b
    end
    add(3)    # => 4
    add(3, 5) # => 8
    
  3. 可变参数

    def sum(*nums)
      nums.sum
    end
    sum(1, 2, 3)  # => 6
    

六、异常处理

begin
  # 可能出错的代码
  result = 10 / 0
rescue ZeroDivisionError => e
  puts "Error: #{e.message}"
ensure
  puts "Cleanup code here"
end

七、注释

  1. 单行注释

    # 这是一个注释
    
  2. 多行注释

    =begin
    这是一个多行注释
    可以写多行内容
    =end
    

八、特殊语法

  1. % 符号快捷语法

    %w[apple banana cherry]  # => ["apple", "banana", "cherry"](字符串数组)
    %i[red green blue]       # => [:red, :green, :blue](符号数组)
    
  2. 并行赋值

    a, b = 1, 2  # a=1, b=2
    a, b = b, a   # 交换值:a=2, b=1
    

九、代码块(Block)

  1. 使用 {}do...end

    # 单行用 {}
    [1, 2, 3].each { |n| puts n }
    
    # 多行用 do...end
    [1, 2, 3].each do |n|
      puts "Number: #{n}"
    end
    
  2. 自定义接受块的方法

    def repeat(times)
      times.times { yield }  # yield 调用块
    end
    
    repeat(3) { puts "Hello!" }  # 输出 3 次 Hello
    

十、常用方法示例

  1. 字符串操作

    "ruby".upcase      # => "RUBY"
    "HELLO".downcase   # => "hello"
    "  test  ".strip   # => "test"
    
  2. 数组操作

    [1, 2, 3].include?(2)  # => true
    [1, 2, 3].push(4)      # => [1, 2, 3, 4]
    [1, 2, 3].join("-")    # => "1-2-3"
    

总结

Ruby 语法以简洁灵活著称,核心特点是:

  • 无分号,代码块通过缩进或 end 结束。
  • 动态类型,无需声明变量类型。
  • 一切皆对象,方法调用可链式操作。

建议通过实际编码练习巩固语法,例如尝试编写小型脚本或使用 Ruby Playground 在线工具。

— END —

相关文章:

  • shell脚本 - Linux定时温度监控-软硬件检测 - 服务器温度监控 - 写入日志
  • [Linux]从零开始的ARM Linux交叉编译与.so文件链接教程
  • nginx路径匹配的优先级
  • 条件概率、概率乘法公式、全概率公式和贝叶斯 (Bayes) 公式
  • phpstrom 配置调试 php 项目全流程,弄清一些概念
  • vue项目本地调试使用https
  • 软考案例分析实例答题模板
  • CS内网渗透 - 如何通过冰蝎 Webshell 上线 Weblogic 服务器到 Cobalt Strike 并绕过杀软检测(360、火绒)?
  • 8.2 对话框2
  • 【硬核实战】从零打造智能五子棋AI:JavaScript实现与算法深度解析
  • SpringBoot 基于个性化定制的智慧校园管理系统设计与开发
  • 大模型学习六:‌小米8闲置,通过Termux安装ubuntu做个随身服务器,纯粹碍眼折腾
  • 【MCP-1】MCP是什么,从DEMO入手
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.2超级对齐与AGI路径探讨
  • 博途 TIA Portal之1200做从站与调试助手的TCP通讯
  • 深入解析机器学习
  • Python(八)—— 开发
  • 显示器各类异常处理方法
  • [ctfshow web入门] web30
  • Qt子模块的功能介绍
  • 《上海市建筑信息模型技术应用指南(2025版)》发布
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 当番茄霸总遇上晋江古言,短剧IP小变局
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机
  • 制造四十余年血腥冲突后,库尔德工人党为何自行解散?