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

  免費注冊 查看新帖 |

Chinaunix

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

喜歡ruby的幾點理由 [復制鏈接]

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

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

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類里擴展了一個myhi方法(實例方法)。
x是String的一個實例,它能訪問到這個方法。



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

任何目標都可定義一個私有方法,它們只屬于這個目標自身。

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這個目標(String的實例),可以加載一個oops方法,它只屬于x自身。
如下"s"也是String的實例,但它就沒有這個方法。

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


類自身是Class類的實例,所以它也是一個目標,可以定義類私有方法。

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


當然目標還可以擴充Module里的方法,很好很強大。

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無法運行。
block就是代碼塊,它類似于perl里的匿名函數(shù),或者python里的lambda。
ruby里的函數(shù)如此廣泛的使用block,正是由于其強大與靈活。
例如數(shù)組或hash的delete_if方法和select/find方法等,接受一個block作為參數(shù),從而使得條件刷選如此容易。

如下偶自己定義一個方法,它接受一個hash和一個block,來實現(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}

評分

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

查看全部評分

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

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

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

評分

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

查看全部評分

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

論壇徽章:
0
6 [報告]
發(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 [報告]
發(fā)表于 2010-01-03 22:08 |只看該作者
不參與語言之爭,只會點C和ASM

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

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

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


你可以不學
人生苦短,我用ruby因為它可以幫我節(jié)省被浪費的生命

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

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP