自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

Ruby語(yǔ)言做為一種解釋型面完全面向?qū)ο蟮哪_本語(yǔ)言,值得我們?nèi)ド钊胙芯?。我們可以利用Ruby向?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可以對(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ā)送消息的一些方法技巧講解。

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

2024-12-19 10:00:00

Python發(fā)送消息編程

2024-08-06 09:55:25

2009-12-14 17:23:31

2020-03-27 15:10:23

SpringJava框架

2009-12-14 10:32:26

Ruby Gnome

2009-12-17 14:03:42

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

2021-03-15 22:42:25

NameNodeDataNode分布式

2014-09-24 11:32:21

微信企業(yè)號(hào)開(kāi)發(fā)

2009-12-18 13:49:40

Ruby Watir

2009-12-15 13:59:42

Ruby對(duì)象操作

2009-12-15 10:10:42

Ruby過(guò)程對(duì)象

2009-12-14 11:12:55

Ruby運(yùn)行

2025-01-10 08:20:00

MQ消息架構(gòu)

2020-08-26 07:17:19

通信

2009-07-30 18:50:32

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

2013-12-11 21:44:01

OpenStack對(duì)象Swift

2024-03-22 12:10:39

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

2009-12-16 14:04:04

Ruby對(duì)象初始化

2009-04-01 10:41:00

GSMWCDMA的

2010-07-20 11:03:45

Telnet會(huì)話
點(diǎn)贊
收藏

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