解析.NET程序員 Ruby核心語(yǔ)法入門(mén)(3)_.Net教程
推薦:關(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
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解析.NET程序員 Ruby核心語(yǔ)法入門(mén)(3)。