亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 6914 | 回復(fù): 11
打印 上一主題 下一主題

喜歡ruby的幾點(diǎn)理由 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-03 21:37 |只看該作者 |倒序?yàn)g覽
ruby好多地方借鑒了Perl,但OO實(shí)現(xiàn)的比perl好的多~~
說幾點(diǎn)偶喜歡ruby的地方:

(1)類都是開放式的,很容易擴(kuò)展。

irb(main):001:0> class String
irb(main):002:1>   def myhi
irb(main):003:2>     puts "hi my world"
irb(main):004:2>   end
irb(main):005:1> end
=> nil

irb(main):006:0> x="hello"
=> "hello"

irb(main):007:0> x.myhi
hi my world
=> nil

如上就方便的在String類里擴(kuò)展了一個(gè)myhi方法(實(shí)例方法)。
x是String的一個(gè)實(shí)例,它能訪問到這個(gè)方法。



(2)單態(tài)類(singleton class),很靈活。

任何目標(biāo)都可定義一個(gè)私有方法,它們只屬于這個(gè)目標(biāo)自身。

irb(main):008:0> def x.oops
irb(main):009:1>   puts "oops it's me"
irb(main):010:1> end
=> nil

irb(main):011:0> x.oops
oops it's me
=> nil

x這個(gè)目標(biāo)(String的實(shí)例),可以加載一個(gè)oops方法,它只屬于x自身。
如下"s"也是String的實(shí)例,但它就沒有這個(gè)方法。

irb(main):012:0> "s".oops
NoMethodError: undefined method `oops' for "s":String
        from (irb):12
        from /usr/bin/irb:12:in `<main>'


類自身是Class類的實(shí)例,所以它也是一個(gè)目標(biāo),可以定義類私有方法。

irb(main):013:0> class Myclass
irb(main):014:1> end
=> nil

irb(main):015:0> def Myclass.echo  
irb(main):016:1>   puts "hello world"
irb(main):017:1> end
=> nil

irb(main):018:0> Myclass.echo
hello world
=> nil


當(dāng)然目標(biāo)還可以擴(kuò)充Module里的方法,很好很強(qiáng)大。

irb(main):019:0> module Foo
irb(main):020:1>  def greet
irb(main):021:2>    puts "Hello, #{self}!"
irb(main):022:2>  end
irb(main):023:1> end
=> nil

irb(main):024:0> x.extend Foo
=> "hello"

irb(main):025:0> x.greet
Hello, hello!



(3)block的使用

ruby將block的使用發(fā)揮到極致,沒有block,ruby無法運(yùn)行。
block就是代碼塊,它類似于perl里的匿名函數(shù),或者python里的lambda。
ruby里的函數(shù)如此廣泛的使用block,正是由于其強(qiáng)大與靈活。
例如數(shù)組或hash的delete_if方法和select/find方法等,接受一個(gè)block作為參數(shù),從而使得條件刷選如此容易。

如下偶自己定義一個(gè)方法,它接受一個(gè)hash和一個(gè)block,來實(shí)現(xiàn)類似hash.find的功能。

irb(main):105:0* def myfunc(a)
irb(main):106:1>   newhash=Hash.new
irb(main):107:1>   if block_given?
irb(main):108:2>     a.each do |k,v| newhash[k] = v if yield k,v end
irb(main):109:2>   else
irb(main):110:2*     raise "no block was given"
irb(main):111:2>   end
irb(main):112:1>   newhash
irb(main):113:1> end
=> nil

irb(main):114:0> x
=> {1=>2, 3=>4, 5=>6, 7=>8}

irb(main):116:0> myfunc(x) do |c,d| c>2 end
=> {3=>4, 5=>6, 7=>8}

評(píng)分

參與人數(shù) 1可用積分 +2 收起 理由
dz902 + 2 這些理由是 Ruby 討人喜歡的地方,也是 ...

查看全部評(píng)分

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-01-03 21:49 |只看該作者
頂仙子

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-01-03 21:52 |只看該作者
不懂啊,太高深了

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-01-03 21:53 |只看該作者
謝謝dz902的小手~

評(píng)分

參與人數(shù) 1可用積分 +2 收起 理由
dz902 + 2 啥時(shí)候再對(duì)詩=)

查看全部評(píng)分

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-01-03 21:55 |只看該作者
也謝謝大家的友情幫頂啦~~
ruby是門好語言,它的優(yōu)雅不應(yīng)該這么冷清~

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-01-03 21:57 |只看該作者
很早就發(fā)過長篇連載原創(chuàng)了。也幫我頂頂唄。

我知道一旦有了版主肯定是要加入精華的。

http://72891.cn/viewthread.php?tid=979792

http://72891.cn/viewthread.php?tid=976303

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-01-03 22:08 |只看該作者
不參與語言之爭,只會(huì)點(diǎn)C和ASM

需要OO思想,但是與語言無關(guān),

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-01-06 10:48 |只看該作者
ruby的作者是小日本。。。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-01-11 11:19 |只看該作者
原帖由 370498196 于 2010-1-6 10:48 發(fā)表
ruby的作者是小日本。。。


你可以不學(xué)
人生苦短,我用ruby因?yàn)樗梢詭臀夜?jié)省被浪費(fèi)的生命

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-01-11 20:04 |只看該作者
我最喜歡Ruby的閉包實(shí)現(xiàn)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP