Ruby程序快速入門之數字、字符串和其它

發表于:2007-04-26來源:作者:點擊數: 標簽:ruby程序數字字符串快速
在 Ruby 中,一切都是對象。更精確地說,Ruby中的一切都是一個具有完整功能的對象。因此,在Ruby中,數字4,定點數3.14和字符串"Hi"都是對象。顯然,它們是有點"特殊"的,因為你不必使用new方法來創建它們。代之的是,你使 用例 如"literal 4"這樣的形式來創
  在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上進行方法調用(在此,是指類方法)。

clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
irb(main):001:0> 3.class
=> Fixnum
irb(main):002:0> 3.4.class
=> Float
irb(main):003:0> 10000000000000000000.class
=> Bignum

  還有另外一些語法用來創建數字類型,顯示于下面的代碼列表中。字母E可以用來描述以指數標志的數字。數字的前面加上0代表這是一個八進制數,加上0x代表這是一個十六進制數,而0b代表是一個二進制數。為清晰起見,下劃線可以用作數字中的分隔符號。注意,當寫literal時,不要用逗號作為分隔符號。在一些情況中,這實際上能生成一個數組,我們將在后面討論。最后,在一個字符(或Ctrl或元字符的組合)前面的一個問號將會創建一個Fixnum的實例,相應于字符的ASCII字符/逃逸序列值。

<
irb(main):001:0> 3.14E5 #指數標志
=> 314000.0
irb(main):002:0> 054 #八進制
=> 44
irb(main):003:0> 0x5A #十六進制
=> 90
irb(main):004:0> 0b1011 #二進制
=> 11
irb(main):005:0> 10_000 #10,000,用下劃線隔開
=> 10000
irb(main):006:0> i=10,000 #創建一個數組而不是10000 Fixnum
=> [10, 0]
irb(main):007:0> i.class
=> Array
irb(main):008:0> ?Z #Fixnum ASCII值
=> 90
irb(main):009:0> ?Z.class
=> Fixnum
irb(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
=> 4
irb(main):002:0> i.class
=> Fixnum
irb(main):003:0> i=i+100000000000000
=> 100000000000004
irb(main):004:0> i.class
=> Bignum
irb(main):005:0> i=i-100000000000000
=> 4
irb(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 str1
a \n string
=> nil
irb(main):004:0> puts str2
a
string
=> nil
irb(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 8 :

原文轉自:http://www.anti-gravitydesign.com

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97