Ruby 数据类型概述

Ruby 数据类型概述

Ruby 是一种动态类型语言,所有数据类型都是对象。主要数据类型包括基本类型、集合类型和特殊类型。

基本数据类型

整数(Integer) 分为 Fixnum(小整数)和 Bignum(大整数),Ruby 2.4+ 后统一为 Integer 类。支持十进制、十六进制(0x)、八进制(0)和二进制(0b)表示法。

ruby 复制代码
42      # 十进制
0x2A    # 十六进制
052     # 八进制
0b101010 # 二进制

浮点数(Float) 表示带小数点的数字,默认双精度。

ruby 复制代码
3.14
2.0e-3  # 科学计数法

字符串(String) 使用单引号或双引号定义,支持插值(仅双引号)和转义字符。

ruby 复制代码
'单引号不插值 #{1+2}' # 输出原样
"双引号插值 #{1+2}"   # 输出 "双引号插值 3"

布尔值(Boolean) true 和 false 是特殊对象,nil 表示空值(属于 NilClass)。

符号(Symbol) 轻量级不可变字符串,以冒号开头,常用于哈希键或标识符。

ruby 复制代码
:ruby
:"dynamic symbol"

集合数据类型

数组(Array) 有序集合,通过索引访问,可混合存储不同类型元素。

ruby 复制代码
arr = [1, "two", :three, 4.0]
arr[1]  # => "two"

哈希(Hash) 键值对集合,键可以是任意对象(常用 Symbol 或 String)。

ruby 复制代码
hash = { name: "Ruby", version: 3.2 }
hash[:name]  # => "Ruby"

范围(Range) 表示连续值序列,常用于迭代或条件判断。

ruby 复制代码
(1..10).include?(5)  # => true
('a'..'z').to_a     # 生成字母数组

特殊数据类型

正则表达式(Regexp) 用于模式匹配,通过 / 定义。

ruby 复制代码
/\d+/ =~ "2023"  # 匹配成功返回索引 0

时间(Time) 表示日期和时间。

ruby 复制代码
Time.now  # 当前时间

类型转换方法

Ruby 提供显式转换方法:

ruby 复制代码
"123".to_i     # 字符串转整数
3.14.to_s      # 浮点数转字符串
:name.to_s     # 符号转字符串
"name".to_sym  # 字符串转符号

动态类型特性

变量无需声明类型,运行时自动确定。可通过 class 方法查看对象类型:

ruby 复制代码
42.class       # => Integer
"hello".class  # => String
nil.class      # => NilClass

注意事项

  • 字符串冻结(freeze)可提高性能,避免重复创建相同字符串。
  • 符号比字符串更高效,但不适合动态生成场景。
  • 大整数自动处理,无需担心溢出问题。
相关推荐
冻柠檬飞冰走茶2 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing032 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊2 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆6753 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩4 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
浮生若城5 小时前
MySQL:库与表的操作
数据库·mysql
Hhy_11076 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19906 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy19906 小时前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala
三*一6 小时前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript