日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何實現(xiàn)Ruby向對象發(fā)送消息

Ruby語言做為一種解釋型面完全面向對象的腳本語言,值得我們去深入研究。我們可以利用Ruby向對象發(fā)送消息。下面將為大家詳細介紹相關方法。#t#

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站設計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的臨高網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

我們可以直接實現(xiàn)Ruby向對象發(fā)送消息:

  1. class HelloWorld 
  2. def say(name) 
  3. print "Hello, ", name 
  4. end 
  5. end 
  6. hw = HelloWorld.new 
  7. hw.send(:say,"world") 

我們通常使用hw.say("world"),但send可以對private的方法起作用。 不光如此send可以使程序更加動態(tài),下面我們看看一個例子:

我們定義了一個類Person,我們希望一個包含Person對象的數(shù)組能夠按照Person的任意成員數(shù)據(jù)來排序實現(xiàn)Ruby向對象發(fā)送消息:

 
 
 
  1. class Person 
  2. attr_reader :name,:age,:height 
  3. def initialize(name,age,height) 
  4. @name,@age,@height = name,age,height 
  5. end 
  6. def inspect 
  7. "#@name #@age #@height" 
  8. end 
  9. end 

在ruby中任何一個類都可以隨時打開的,這樣可以寫出像2.days_ago這樣優(yōu)美的code,我們打開Array,并定義一個sort_by方法:

 
 
 
  1. class Array 
  2. def sort_by(sysm) 
  3. self.sort{|x,y| x.send(sym) 
    <=> y.send(sym)} 
  4. end 
  5. end 

我們看看運行結果:

 
 
 
  1. people = [] 
  2. people << Person.new("Hansel",35,69) 
  3. people << Person.new("Gretel",32,64) 
  4. people << Person.new("Ted",36,68) 
  5. people << Person.new("Alice", 33, 63) 
  6. p1 = people.sort_by(:name) 
  7. p2 = people.sort_by(:age) 
  8. p3 = people.sort_by(:height) 
  9. p p1 # [Alice 33 63, Gretel 32 
    64, Hansel 35 69, Ted 36 68] 
  10. p p2 # [Gretel 32 64, Alice 33 
    63, Hansel 35 69, Ted 36 68] 
  11. p p3 # [Alice 33 63, Gretel 32 
    64, Ted 36 68, Hansel 35 69] 

這個結果是如何得到的呢?

其實除了send外還有一個地方應該注意attr_reader,attr_reader相當于定義了name, age,heigh三個方法,而Array里的sort方法只需要提供一個比較方法:

x.send(sym) <=> y.send(sym) 通過send得到person的屬性值,然后在使用<=>比較。

以上就是Ruby向對象發(fā)送消息的一些方法技巧講解。


名稱欄目:如何實現(xiàn)Ruby向對象發(fā)送消息
分享網(wǎng)址:http://www.dlmjj.cn/article/dpspcjh.html