美文网首页
ruby的数据类型--符号(Symbol)、特殊值(True、F

ruby的数据类型--符号(Symbol)、特殊值(True、F

作者: ibob2012 | 来源:发表于2019-08-19 15:09 被阅读0次

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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

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

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

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

3、类型转换

(1)字符串转符号 to_sym

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

=> :hello

1

2

(2)符号转字符串 to_s

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

=> "hello"

1

2

4、特殊值

Ruby的特殊值有true、false、nil

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

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

————————————————

版权声明:本文为CSDN博主「猫宁一」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/shine_a/article/details/85060590

相关文章

  • ruby的数据类型--符号(Symbol)、特殊值(True、F

    1、符号(Symbol) 符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:na...

  • 2.4 ruby的数据类型--符号(Symbol)、特殊值(Tr

    1、符号(Symbol) 符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:na...

  • es6之Symbol数据类型

    Symbol(符号) 一. 概念 注:Symbol为生产Symbol类型数据的函数,而不是数据类型本身 值类型而非...

  • Symbol的应用场景

    Symbol (符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。符号...

  • ES6--(6)符号

    符号对象(Symbol)是ECMAScript 6 中新增的数据类型,通过Symbol可以创建一个唯一的值,由...

  • es6-Symbol数据类型

    Symbol Symbol 是一个符号对象,是es6新添加的数据类型,通过Symbol()可以得到一个唯一的值,所...

  • 概述JS的数据类型

    数据类型有7种,分别为:数值(number)、字符串(string)、布尔值(boolean)、符号(symbol...

  • 深入理解ES6--6.符号与符号属性

    主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号 1. Symbol基础 1...

  • ES6标准入门 摘要 (Symbol)

    Symbol 原始数据类型Symbol,表示独一无二的值,Symbol 值通过Symbol函数生成。这就是说,对象...

  • es6-symbol的用法

    Symbol数据类型 Synmbol 数据类型提供一个独一无二的值。 Symbol的声明 Symbol的使用 根据...

网友评论

      本文标题:ruby的数据类型--符号(Symbol)、特殊值(True、F

      本文链接:https://www.haomeiwen.com/subject/hyossctx.html