日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析.NET程序員 Ruby核心語(yǔ)法入門(7)_.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è)面接收到

元編程

即使Ruby沒(méi)有屬性,你也可以使用函數(shù)調(diào)用,通常不需要括弧來(lái)模擬屬性,你也需要影響Ruby以“=”結(jié)束函數(shù)的特殊處理方式,讓它們擔(dān)當(dāng)調(diào)節(jié)器的作用。

你可以象下面這樣定義一個(gè)person類:

irb(main):001:0> class Person
irb(main):002:1> def age
irb(main):003:2> @age
irb(main):004:2> end
irb(main):005:1> def age=(value)
irb(main):006:2> @age = value
irb(main):007:2> end
irb(main):008:1> end
=> nil

接下來(lái)就可以使用person類的實(shí)例,將age當(dāng)作person類的一個(gè)屬性來(lái)處理,如:

irb(main):009:0>p = Person.new
=># 如果你想將age的默認(rèn)值設(shè)為一個(gè)非零的值,那么你可以使用initialize函數(shù)來(lái)設(shè)置。

這個(gè)代碼顯得非常標(biāo)準(zhǔn),如果這是一個(gè)類似c#的語(yǔ)言,你可能會(huì)使用類似Visual Studio中片段,甚至靜態(tài)代碼的產(chǎn)生會(huì)自動(dòng)生成reader和writer的屬性。
在Ruby中,你可以使用元編程做一點(diǎn)努力就可以創(chuàng)建這些事物,理想情況下,你可以編寫(xiě)類似下面這樣的代碼:

class Person
prop :age
end

你應(yīng)該在對(duì)象上定義個(gè)類(靜態(tài))函數(shù)以便你在定義自己的類時(shí)可以使用它,你也可以使用一個(gè)你還沒(méi)有看到過(guò)的函數(shù),class_eval函數(shù),如:

irb(main):001:0> class Object
irb(main):002:1> def self.prop *names
irb(main):003:2> names.each { |name|
irb(main):004:3* self.class_eval "
irb(main):005:3" def #{name}
irb(main):006:3" @#{name}
irb(main):007:3" end"
irb(main):008:3> self.class_eval "
irb(main):009:3" def #{name}=(value)
irb(main):010:3" @#{name} = value
irb(main):011:3" end"
irb(main):012:3> }
irb(main):013:2> nil
irb(main):014:2> end
irb(main):015:1> end
=> nil

上面使用的class_eval函數(shù)是創(chuàng)建了另外一個(gè)函數(shù)結(jié)束的,它給字符串賦值,因此你可以在你的類中編寫(xiě)自己的函數(shù)。

每個(gè)傳遞給prop函數(shù)的名字向新類添加了兩個(gè)函數(shù):getter和setter。最終使用你傳遞給prop的名字替換掉#{name}。

接下來(lái),你可以在你的類定義中使用prop了,如:

irb(main):016:0> class Person
irb(main):017:1> prop :age, :name
irb(main):018:1>
irb(main):019:1* def initialize(age, name)
irb(main):020:2> @age = age
irb(main):021:2> @name = name
irb(main):022:2> end
irb(main):023:1> end
=> nil
irb(main):024:0> p = Person.new(36, "Brad")
=> # 在你的環(huán)境中有了這些便利的工具后,你可以更快速地創(chuàng)建更高層次的類,使用這些元編程技巧可以幫助你工作得更好,不需要依賴于編輯片段或編譯時(shí)代碼生成。

小結(jié)

本文只是對(duì)Ruby中便利工具做了一個(gè)皮毛介紹,今天學(xué)習(xí)好Ruby可以在當(dāng)Ruby.在.NET和Silverlight中可用時(shí)幫助你,有這么強(qiáng)大的一個(gè)動(dòng)態(tài)編程語(yǔ)言,你的編程工具箱也會(huì)擴(kuò)寬許多,但更重要的是,它可以幫助你開(kāi)始以一種新的方式思考問(wèn)題和解決方案。

分享:.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

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