【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,这里注意和其他语言的区别


目录
相关文章
|
11天前
|
设计模式 JavaScript 前端开发
es6加上symbol的基础数据类型
【10月更文挑战第30天】ES6 中的 `Symbol` 作为一种新的基础数据类型,为 JavaScript 提供了一种创建唯一标识符和处理对象属性名冲突的有效方式,丰富了 JavaScript 的数据类型体系和编程模式,在实际开发中具有重要的应用价值。
|
11天前
|
设计模式 JavaScript 前端开发
es6加上symbol的基础数据类型
【10月更文挑战第22天】ES6中的 `Symbol` 作为一种新的基础数据类型,为JavaScript提供了一种创建唯一标识符和处理对象属性名冲突的有效方式,丰富了JavaScript的数据类型体系和编程模式,在实际开发中具有重要的应用价值。
|
3月前
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。
|
3月前
|
前端开发 测试技术 API
揭秘Ruby on Rails的神秘力量:如何让你的Web应用飞起来?
【8月更文挑战第31天】Ruby on Rails(简称RoR)是一个基于Ruby语言的开源Web应用框架,自2005年发布以来,因简洁的语法、强大的功能和高效的开发效率而广受好评。RoR采用MVC架构,提高代码可读性和可维护性,拥有庞大的社区和丰富的库支持。本文通过示例代码展示其强大之处,并介绍RoR的核心概念与最佳实践,帮助开发者更高效地构建Web应用。
42 0
|
3月前
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
34 0
|
3月前
|
安全 前端开发 数据安全/隐私保护
如何在Ruby on Rails中打造坚不可摧的OAuth认证机制
【8月更文挑战第31天】在构建现代Web应用时,认证与授权至关重要。本文介绍如何在Ruby on Rails中实现OAuth认证,通过使用`omniauth`和`devise` gems简化流程。首先安装并配置相关gem,接着在`User`模型中处理OAuth回调,最后设置路由及控制器完成登录流程。借助OAuth,用户可使用第三方服务安全地进行身份验证,提升应用安全性与用户体验。随着OAuth标准的演进,这一机制将在Rails项目中得到更广泛应用。
48 0
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
5月前
|
前端开发 测试技术 数据库
Ruby on Rails:快速开发Web应用的秘密
【6月更文挑战第9天】Ruby on Rails,一款基于Ruby的Web开发框架,以其高效、简洁和强大备受青睐。通过“约定优于配置”减少配置工作,内置丰富功能库加速开发,如路由、数据库访问。活跃的社区和海量资源提供支持,MVC架构与RESTful设计确保代码清晰可扩展。高效的数据库迁移和测试工具保证质量。Rails是快速构建Web应用的理想选择,未来将持续影响Web开发领域。
|
6月前
|
Ruby
|
6月前
|
JSON 数据格式 Ruby