解析.NET程序員 Ruby核心語(yǔ)法入門(mén)(3)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:關(guān)于URL的傳遞字符串問(wèn)題的研究
      前幾天在調(diào)程序的時(shí)候遇到了比較郁悶的問(wèn)題,我用URL從一個(gè)頁(yè)面?zhèn)鬟f字符串到另一個(gè)頁(yè)面的時(shí),出現(xiàn)了個(gè)奇怪的問(wèn)題,我要傳遞的字符串是“DK51 700中繼站”;可是另一個(gè)頁(yè)面接收到

      數(shù)組

      Ruby中的數(shù)組與.NET 1.0中的ArrayList類很接近,它們的大小都是可變的,用于存儲(chǔ)任意類型的數(shù)據(jù),從0開(kāi)始編號(hào),如:

      irb(main):032:0> a = ["hello", 42, "world"]
      => ["hello", 42, "world"]
      irb(main):033:0> a << 5.0 * 7.5
      => ["hello", 42, "world", 37.5]
      irb(main):034:0> a[0]
      => "hello"
      irb(main):035:0> a[6] = 'hi' * 2
      => "hihi"
      irb(main):036:0> a
      => ["hello", 42, "world", 37.5, nil, nil, "hihi"]
      irb(main):037:0> a[99]
      => nil

      前面的代碼顯示了如何使用<<操作符向數(shù)組末尾追加項(xiàng)目,以及獲取或設(shè)置值使用的指針操作符[],當(dāng)你向數(shù)組末尾添加一個(gè)項(xiàng)目時(shí),Ruby使用零值填充數(shù)組中的“洞”,當(dāng)你訪問(wèn)數(shù)組外的值時(shí),Ruby返回零值而不是異常。

      你可以使用一個(gè)范圍的指針將數(shù)組分片,也可以使用負(fù)的指針從后向前訪問(wèn)數(shù)組,-1就是最后一項(xiàng),-2是倒數(shù)第二項(xiàng),以此類推,但不能使用反向范圍獲取反向分片,你可以使用一個(gè)正向范圍,然后調(diào)用reverse方法,如:

      irb(main):038:0> a[-1]
      => "hihi"
      irb(main):039:0> a[1..3]
      =>[42, "world", 37.5]
      irb(main):040:0>a[2..-2]
      =>["world", 37.5, nil, nil]
      irb(main):041:0>a[-4..-1]
      =>[37.5, nil, nil, "hihi"]
      irb(main):042:0>a[-1..-4] # 不能工作
      =>[]
      irb(main):043:0>a[-4..-1].reverse # 能夠工作
      =>["hihi", nil, nil, 37.5]

      和字符串一樣,你會(huì)發(fā)現(xiàn)有多個(gè)唯一對(duì)數(shù)組有用的類函數(shù),如:

      irb(main):044:0> a
      => ["hello", 42, "world", 37.5, nil, nil, "hihi"]
      irb(main):045:0> a.compact
      => ["hello", 42, "world", 37.5, "hihi"]
      irb(main):046:0> a.join
      => "hello42world37.5hihi"
      irb(main):047:0> [10, 75, 6, 29].sort
      => [6, 10, 29, 75]
      irb(main):048:0> [[1, 2, 3], [4, 5, 6]]
      => [[1, 2, 3], [4, 5, 6]]
      irb(main):049:0> [[1, 2, 3], [4, 5, 6]].flatten
      => [1, 2, 3, 4, 5, 6]

      散列

      Ruby的最后一個(gè)核心數(shù)據(jù)結(jié)構(gòu)是散列,與.NET 1.0中的散列表類似,它是一個(gè)聯(lián)合數(shù)組,它的鍵值可以是任意類型的值,它們指向的數(shù)據(jù)也可以是任意類型的數(shù)據(jù),實(shí)際上,大部分散列使用的是符號(hào)作為鍵值。

      使用{}語(yǔ)法聲明散列,并且使用key => value格式聲明初始值,在散列中獲取或設(shè)置值時(shí)都可以使用鍵值操作符,如:

      irb(main):050:0> h = {:foo=>'bar', :baz=>'biff'}
      => {:foo=>"bar", :baz=>"biff"}
      irb(main):051:0> h[:foo]
      => "bar"
      irb(main):052:0> h[:unknown]
      => nil
      irb(main):053:0> h[:baz] = "new"
      => "new"
      => {:foo=>"bar", :baz=>"new"}
      irb(main):054:0> h.entries
      => [[:foo, "bar"], [:baz, "new"]]

      變量

      Ruby中的變量和類函數(shù)名都是以小寫(xiě)字母開(kāi)頭的,可以包括字母、數(shù)字和下劃線。本地變量沒(méi)有前綴,實(shí)例變量以@開(kāi)頭,全局變量以$開(kāi)頭。
      在使用變量前無(wú)需聲明,未初始化的變量有一個(gè)零值,下面是幾個(gè)預(yù)定義的變量:

      nil表示一個(gè)“無(wú)”對(duì)象,與.NET中的null類似,除了nil是一個(gè)實(shí)例化的NilClass類外。

      true和false分別是實(shí)例化的TrueClass和FalseClass。

      在類函數(shù)中使用時(shí),self指向調(diào)用類函數(shù)的對(duì)象實(shí)例;在一個(gè)類中使用時(shí),它指的是實(shí)例化的類對(duì)象本身。

      __FILE__ 和__LINE__返回當(dāng)前執(zhí)行文件和那個(gè)文件中的行號(hào)。

      符號(hào)

      Ruby有一個(gè)特殊類型的字符串,叫做符號(hào),因?yàn)樽址赗uby中是可以被修改的,使用它們作為散列鍵是很慢的,而且有一些情況是不能預(yù)測(cè)的。
      除了它們是以冒號(hào)(:)開(kāi)頭外,符號(hào)的命名規(guī)則和變量的命名規(guī)則一致,你不能改變符號(hào)的值,兩個(gè)名字相同的符號(hào)它們的身份就一樣,它們可以作為優(yōu)秀的散列鍵,查找請(qǐng)求只需要比較整數(shù)值,而不是與一個(gè)可變長(zhǎng)字符串的值進(jìn)行對(duì)比。

      分享:.NET Framework 3.5 SP1正式版
      微軟今天發(fā)布了.NET Framework 3.5第一個(gè)SP服務(wù)包的最終版.這是一個(gè)累積更新,包含很多基于.NET Framework 2.0、3.0和3.5不斷生成的新功能,此外還包括.NET Framework 2.0 SP2和.NET Framewo

      來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2009-08-02
      相關(guān).Net教程