偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何實(shí)現(xiàn)Ruby向?qū)ο蟀l(fā)送消息

開發(fā) 開發(fā)工具
Ruby向?qū)ο蟀l(fā)送消息對于一個接觸Ruby語言不久的人來說還是不好掌握的。希望通過本文介紹的內(nèi)容可以充分掌握這一方法的應(yīng)用。

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

我們可以直接實(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可以對private的方法起作用。 不光如此send可以使程序更加動態(tài),下面我們看看一個例子:

我們定義了一個類Person,我們希望一個包含Person對象的數(shù)組能夠按照Person的任意成員數(shù)據(jù)來排序?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中任何一個類都可以隨時打開的,這樣可以寫出像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  

我們看看運(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]  

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

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

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

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

責(zé)任編輯:曹凱 來源: jb51.net
相關(guān)推薦

2024-12-19 10:00:00

Python發(fā)送消息編程

2024-08-06 09:55:25

2020-03-27 15:10:23

SpringJava框架

2009-12-14 17:23:31

2009-12-14 10:32:26

Ruby Gnome

2021-03-15 22:42:25

NameNodeDataNode分布式

2009-12-17 14:03:42

Ruby監(jiān)控網(wǎng)絡(luò)

2014-09-24 11:32:21

微信企業(yè)號開發(fā)

2009-12-14 11:12:55

Ruby運(yùn)行

2009-12-15 10:10:42

Ruby過程對象

2009-12-18 13:49:40

Ruby Watir

2009-12-15 13:59:42

Ruby對象操作

2025-01-10 08:20:00

MQ消息架構(gòu)

2020-08-26 07:17:19

通信

2024-03-22 12:10:39

Redis消息隊(duì)列數(shù)據(jù)庫

2009-04-01 10:41:00

GSMWCDMA的

2009-07-30 18:50:32

C#發(fā)送消息C#應(yīng)用程序

2013-12-11 21:44:01

OpenStack對象Swift

2009-12-18 16:27:41

Ruby解析Json

2009-09-28 11:05:29

Ruby端口掃描
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號