【Ruby on Rails全栈课程】2.4 ruby的数据类型--符号(Symbol)、特殊值(True、False 和 Nil)

简介: 1、符号(Symbol)符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:name或者:“string”,创建的对象会储存在ruby的符号表中,相同内容的符号不会再重新创建,在一些情况下,使用符号(Symbol) 处理名字可以降低 Ruby 内存消耗,提高执行速度。

1、符号(Symbol)


符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:name或者:“string”,创建的对象会储存在ruby的符号表中,相同内容的符号不会再重新创建,在一些情况下,使用符号(Symbol) 处理名字可以降低 Ruby 内存消耗,提高执行速度。


2、符号和字符串的区别


(1)符号的优点是降低ruby的内存消耗,从而提高执行速度,符号的内容如果是相同的,则不会创建新的Symbol(符号)对象。字符串内容如果是相同的,还是会创建新的String(字符串)对象。


可以通过 object_id 方法来得到一个对象标识符(对象标识符相当于对象的地址,可以用过对象标识符来区别是否是一个对象),我们通过代码来看看符号和字符串的区别


#定义两个相同的符号
irb(main):011:0> foo_1 = :"hello"
=> :hello
irb(main):012:0> foo_2 = :"hello"
=> :hello
#两个相同符号的对象标识符一样
irb(main):015:0> foo_1.object_id
=> 8447388
irb(main):016:0> foo_2.object_id
=> 8447388
#定义两个相同的字符串
irb(main):013:0> foo_3 = "hello"
=> "hello"
irb(main):014:0> foo_4 = "hello"
=> "hello"
#两个相同符号的对象标识符不一样
irb(main):017:0> foo_3.object_id
=> 70209820671880
irb(main):018:0> foo_4.object_id
=> 70209820665580

根据上面例子可以看出相同的内容,符号不会创建新的对象,但是字符串会创建新的对象,在某些情况下,字符串的这种特性就会浪费内存


那么我们什么时候用字符,什么时候用字符串呢?可以参考以下标准:


一个字符定义之后可能会变化,则用String(字符串)


一个字符定义之后不会变化,则用Symbol(符号)。比如哈希表的关键字


3、类型转换


(1)字符串转符号 to_sym


irb(main):019:0> "hello".to_sym
=> :hello


(2)符号转字符串 to_s


irb(main):020:0> :hello.to_s
=> "hello"

4、特殊值


Ruby的特殊值有true、false、nil


Ruby 中没有 Boolean 类,True、False 和 Nil 分别是 TrueClass、FalseClass 和 NilClass 的单键实例。


常用于语句的判断中 在ruby中除了nil和false表现为false,其他的均表现为true。0也表现为true,这里注意和其他语言的区别


目录
相关文章
|
2月前
|
JavaScript 前端开发 开发者
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
编程笔记 html5&css&js 071 JavaScript Symbol 数据类型
|
8月前
|
前端开发 JavaScript 数据库
前端学Ruby:全栈论坛(地宫)项目一
前端学Ruby:全栈论坛(地宫)项目一
50 0
|
1月前
|
前端开发 测试技术 数据库
Ruby on Rails:快速开发Web应用的秘密
【6月更文挑战第9天】Ruby on Rails,一款基于Ruby的Web开发框架,以其高效、简洁和强大备受青睐。通过“约定优于配置”减少配置工作,内置丰富功能库加速开发,如路由、数据库访问。活跃的社区和海量资源提供支持,MVC架构与RESTful设计确保代码清晰可扩展。高效的数据库迁移和测试工具保证质量。Rails是快速构建Web应用的理想选择,未来将持续影响Web开发领域。
|
2月前
|
开发框架 安全 前端开发
使用Ruby on Rails进行快速Web开发
【5月更文挑战第27天】Ruby on Rails是一款基于Ruby的高效Web开发框架,以其快速开发、简洁优雅和强大的社区支持著称。遵循“约定优于配置”,Rails简化了开发流程,通过MVC架构保持代码清晰。安装Ruby和Rails后,可使用命令行工具创建项目、定义模型、控制器和视图,配置路由,并运行测试。借助Gem扩展功能,优化性能和确保安全性,Rails是快速构建高质量Web应用的理想选择。
|
2月前
|
监控 数据可视化 前端开发
使用Ruby on Rails构建的员工上网行为监控Web应用
我们开发了一款基于Ruby on Rails的员工上网行为监控Web应用,帮助企业保护数据安全和确保员工生产力。该应用利用Rails的MVC架构和Active Record管理数据库,通过网络代理和JavaScript追踪员工网络活动。数据收集后,应用进行分析和可视化,以便识别异常行为。此外,借助Rails的后台任务和Sidekiq gem,实现数据自动化处理和定时更新,为公司提供实时监控反馈。
284 2
|
2月前
|
缓存 前端开发 测试技术
框架分析(6)-Ruby on Rails
框架分析(6)-Ruby on Rails
|
2月前
|
缓存 关系型数据库 数据库
上云一年烧320万美元,成功“下云”六个月后Ruby on Rails之父现身回了 14 个问题!...
上云一年烧320万美元,成功“下云”六个月后Ruby on Rails之父现身回了 14 个问题!...
35 1
|
2月前
|
C# Ruby
|
2月前
|
Ruby 索引
|
2月前
|
Ruby