下载本文示例代码
在Ruby中,一切都是对象。更精确地说,Ruby中的一切都是一个具有完整功能的对象。因此,在Ruby中,数字4,定点数3.14和字符串"Hi"都是对象。显然,它们是有点"特殊"的,因为你不必使用new方法来创建它们。代之的是,你使用例如"literal 4"这样的形式来创建一个代表数字4的对象的实例。 然而,对于绝大多数人来说,学习一种新的编程语言时,首先理解该语言提供的"标准"类型是非常有用的。所以,在这一节,我们先探讨数字类型,字符串类型,布尔类型和另外一些基本的Ruby数据类型。 数字类型 实质上,Ruby中的数字被分为整数和浮点数两大类。其中,整数又被进一步细分为"常规大小"的整数和大型整数。因为在Ruby中一切都是对象,所以整数和浮点数都是按类来定义的(见图1)。从图1看出,Numeric是所有数字类型的基类,Float和Integer类是Numeric的子类。Fixnum和Bignum都是Integer的子类型-它们分别定义了"常规大小"的整数和大型整数。
图1.Ruby的数字类型类继承图。 Literal用来描述这些类的实例。下面的在交互式Ruby外壳(irb)中的代码显示了Float,Fixnum和Bignum的literal实例。注意,可以在literal上进行方法调用(在此,是指类方法)。
irb(main):001:0> 3.class=> Fixnumirb(main):002:0> 3.4.class=> Floatirb(main):003:0> 10000000000000000000.class=> Bignum 还有另外一些语法用来创建数字类型,显示于下面的代码列表中。字母E可以用来描述以指数标志的数字。数字的前面加上0代表这是一个八进制数,加上0x代表这是一个十六进制数,而0b代表是一个二进制数。为清晰起见,下划线可以用作数字中的分隔符号。注意,当写literal时,不要用逗号作为分隔符号。在一些情况中,这实际上能生成一个数组,我们将在后面讨论。最后,在一个字符(或Ctrl或元字符的组合)前面的一个问号将会创建一个Fixnum的实例,相应于字符的ASCII字符/逃逸序列值。
3.14E5 #指数标志=> 314000.0irb(main):002:0> 054 #八进制=> 44irb(main):003:0> 0x5A #十六进制=> 90irb(main):004:0> 0b1011 #二进制=> 11irb(main):005:0> 10_000 #10,000,用下划线隔开=> 10000irb(main):006:0> i=10,000 #创建一个数组而不是10000 Fixnum=> [10, 0]irb(main):007:0> i.class=> Arrayirb(main):008:0> ?Z #Fixnum ASCII值=> 90irb(main):009:0> ?Z.class=> Fixnumirb(main):010:0> ?\C-s #Control-s的值ASCII=> 19 Fixnum和Bignum实例间的真实差别是什么?Fixnum整数可以被存储在机器中的一个字(通常16,32或64位)中,但减去1个位;而Bignum实例是超出固定存储空间的整数。当然,作为开发者,你不必担心整数的大小(见下面的例子),由Ruby负责为你实现Fixnum和Bignum之间的自动转换!
irb(main):001:0> i=4=> 4irb(main):002:0> i.class=> Fixnumirb(main):003:0> i=i 100000000000000=> 100000000000004irb(main):004:0> i.class=> Bignumirb(main):005:0> i=i-100000000000000=> 4irb(main):006:0> i.class=> Fixnum 字符串 在Ruby中,字符串是任意顺序的字节。通常,它们是一个字符序列。在Ruby中,可以使用一个literal或new方法来创建String类的实例。
irb(main):001:0> s1="Hello World"=> "Hello World"irb(main):002:0> s2=String.new("Hello World")=> "Hello World" 当然,String中定义了许多方法(和操作符)。另外,可以使用单引号或双引号来指定一个字符串。双引号情况下允许串中加入逃逸字符并能够嵌入待计算的表达式。在单引号串情况下,你看到的就是串中的实际内容。为了更好的理解,请看下列例子。
irb(main):001:0> str1='a \n string'=> "a \\n string"irb(main):002:0> str2="a \n string"=> "a \n string"irb(main):003:0> puts str1a \n string=> nilirb(main):004:0> puts str2a string=> nilirb(main):005:0> 'try to add #{2 2}'=> "try to add \#{2 2}"irb(main):006:0> "try to add #{2 2}"=> "try to add 4"irb(main):007:0> this="that"=> "that"irb(main):008:0> 'when single quote rights #{this}'=> "when single quote rights \#{this}"irb(main):009:0> "double quote rights #{this}"=> "double quote rights that" 请注意,在显示之前,双引号中的文本是如何被计算的,其中包括了逃逸符号(\n)和表达式(#{2 2})。 除了使用单引号和双引号来定义一个字符串literal外,在Ruby中,还有另外的方法可以表达literal。一个百分号和小写或大写字母Q可以用来表达一个字符串,分别相应于单引号或双引号风格。
irb(main):001:0> %q@this is a single quote string #{2 2} here@=> "this is a single quote string \#{2 2} here"irb(main):002:0> %Q@this is a double quote string #{2 2} here@=> "this is a double quote string 4 here" 注意,跟随在q%或Q%后面的字符分别定义了字符串literal的开始和结束。在本例中,@符号用作字符串开始与结束的限界符号。 还应该注意,Ruby并没有区分一个字符串和一个字符。也就是说,没有适用于单个字符的特定的类-它们仅是一些小的字符串。共2页。 1 2 :
在Ruby中,一切都是对象。更精确地说,Ruby中的一切都是一个具有完整功能的对象。因此,在Ruby中,数字4,定点数3.14和字符串"Hi"都是对象。显然,它们是有点"特殊"的,因为你不必使用new方法来创建它们。代之的是,你使用例如"literal 4"这样的形式来创建一个代表数字4的对象的实例。 然而,对于绝大多数人来说,学习一种新的编程语言时,首先理解该语言提供的"标准"类型是非常有用的。所以,在这一节,我们先探讨数字类型,字符串类型,布尔类型和另外一些基本的Ruby数据类型。 数字类型 实质上,Ruby中的数字被分为整数和浮点数两大类。其中,整数又被进一步细分为"常规大小"的整数和大型整数。因为在Ruby中一切都是对象,所以整数和浮点数都是按类来定义的(见图1)。从图1看出,Numeric是所有数字类型的基类,Float和Integer类是Numeric的子类。Fixnum和Bignum都是Integer的子类型-它们分别定义了"常规大小"的整数和大型整数。
图1.Ruby的数字类型类继承图。 Literal用来描述这些类的实例。下面的在交互式Ruby外壳(irb)中的代码显示了Float,Fixnum和Bignum的literal实例。注意,可以在literal上进行方法调用(在此,是指类方法)。
irb(main):001:0> 3.class=> Fixnumirb(main):002:0> 3.4.class=> Floatirb(main):003:0> 10000000000000000000.class=> Bignum 还有另外一些语法用来创建数字类型,显示于下面的代码列表中。字母E可以用来描述以指数标志的数字。数字的前面加上0代表这是一个八进制数,加上0x代表这是一个十六进制数,而0b代表是一个二进制数。为清晰起见,下划线可以用作数字中的分隔符号。注意,当写literal时,不要用逗号作为分隔符号。在一些情况中,这实际上能生成一个数组,我们将在后面讨论。最后,在一个字符(或Ctrl或元字符的组合)前面的一个问号将会创建一个Fixnum的实例,相应于字符的ASCII字符/逃逸序列值。
3.14E5 #指数标志=> 314000.0irb(main):002:0> 054 #八进制=> 44irb(main):003:0> 0x5A #十六进制=> 90irb(main):004:0> 0b1011 #二进制=> 11irb(main):005:0> 10_000 #10,000,用下划线隔开=> 10000irb(main):006:0> i=10,000 #创建一个数组而不是10000 Fixnum=> [10, 0]irb(main):007:0> i.class=> Arrayirb(main):008:0> ?Z #Fixnum ASCII值=> 90irb(main):009:0> ?Z.class=> Fixnumirb(main):010:0> ?\C-s #Control-s的值ASCII=> 19 Fixnum和Bignum实例间的真实差别是什么?Fixnum整数可以被存储在机器中的一个字(通常16,32或64位)中,但减去1个位;而Bignum实例是超出固定存储空间的整数。当然,作为开发者,你不必担心整数的大小(见下面的例子),由Ruby负责为你实现Fixnum和Bignum之间的自动转换!
irb(main):001:0> i=4=> 4irb(main):002:0> i.class=> Fixnumirb(main):003:0> i=i 100000000000000=> 100000000000004irb(main):004:0> i.class=> Bignumirb(main):005:0> i=i-100000000000000=> 4irb(main):006:0> i.class=> Fixnum 字符串 在Ruby中,字符串是任意顺序的字节。通常,它们是一个字符序列。在Ruby中,可以使用一个literal或new方法来创建String类的实例。
irb(main):001:0> s1="Hello World"=> "Hello World"irb(main):002:0> s2=String.new("Hello World")=> "Hello World" 当然,String中定义了许多方法(和操作符)。另外,可以使用单引号或双引号来指定一个字符串。双引号情况下允许串中加入逃逸字符并能够嵌入待计算的表达式。在单引号串情况下,你看到的就是串中的实际内容。为了更好的理解,请看下列例子。
irb(main):001:0> str1='a \n string'=> "a \\n string"irb(main):002:0> str2="a \n string"=> "a \n string"irb(main):003:0> puts str1a \n string=> nilirb(main):004:0> puts str2a string=> nilirb(main):005:0> 'try to add #{2 2}'=> "try to add \#{2 2}"irb(main):006:0> "try to add #{2 2}"=> "try to add 4"irb(main):007:0> this="that"=> "that"irb(main):008:0> 'when single quote rights #{this}'=> "when single quote rights \#{this}"irb(main):009:0> "double quote rights #{this}"=> "double quote rights that" 请注意,在显示之前,双引号中的文本是如何被计算的,其中包括了逃逸符号(\n)和表达式(#{2 2})。 除了使用单引号和双引号来定义一个字符串literal外,在Ruby中,还有另外的方法可以表达literal。一个百分号和小写或大写字母Q可以用来表达一个字符串,分别相应于单引号或双引号风格。
irb(main):001:0> %q@this is a single quote string #{2 2} here@=> "this is a single quote string \#{2 2} here"irb(main):002:0> %Q@this is a double quote string #{2 2} here@=> "this is a double quote string 4 here" 注意,跟随在q%或Q%后面的字符分别定义了字符串literal的开始和结束。在本例中,@符号用作字符串开始与结束的限界符号。 还应该注意,Ruby并没有区分一个字符串和一个字符。也就是说,没有适用于单个字符的特定的类-它们仅是一些小的字符串。共2页。 1 2 :
下载本文示例代码
Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它Ruby程序快速入门之数字、字符串和其它
阅读(131) | 评论(0) | 转发(0) |