日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何實(shí)現(xiàn)Ruby向?qū)ο蟀l(fā)送消息

Ruby語(yǔ)言做為一種解釋型面完全面向?qū)ο蟮哪_本語(yǔ)言,值得我們?nèi)ド钊胙芯?。我們可以利用Ruby向?qū)ο蟀l(fā)送消息。下面將為大家詳細(xì)介紹相關(guān)方法。#t#

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

我們可以直接實(shí)現(xiàn)Ruby向?qū)ο蟀l(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可以對(duì)private的方法起作用。 不光如此send可以使程序更加動(dòng)態(tài),下面我們看看一個(gè)例子:

我們定義了一個(gè)類Person,我們希望一個(gè)包含Person對(duì)象的數(shù)組能夠按照Person的任意成員數(shù)據(jù)來(lái)排序?qū)崿F(xiàn)Ruby向?qū)ο蟀l(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中任何一個(gè)類都可以隨時(shí)打開(kāi)的,這樣可以寫出像2.days_ago這樣優(yōu)美的code,我們打開(kāi)Array,并定義一個(gè)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 

我們看看運(yùn)行結(jié)果:

 
 
 
  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] 

這個(gè)結(jié)果是如何得到的呢?

其實(shí)除了send外還有一個(gè)地方應(yīng)該注意attr_reader,attr_reader相當(dāng)于定義了name, age,heigh三個(gè)方法,而Array里的sort方法只需要提供一個(gè)比較方法:

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

以上就是Ruby向?qū)ο蟀l(fā)送消息的一些方法技巧講解。


網(wǎng)頁(yè)標(biāo)題:如何實(shí)現(xiàn)Ruby向?qū)ο蟀l(fā)送消息
瀏覽地址:http://www.5511xx.com/article/dpspcjh.html