成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何實現(xiàn)Ruby向對象發(fā)送消息

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

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

我們可以直接實現(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對象的數組能夠按照Person的任意成員數據來排序實現(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ā)送消息的一些方法技巧講解。

責任編輯:曹凱 來源: jb51.net
相關推薦

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)控網絡

2014-09-24 11:32:21

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

2009-12-14 11:12:55

Ruby運行

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消息架構

2020-08-26 07:17:19

通信

2024-03-22 12:10:39

Redis消息隊列數據庫

2009-04-01 10:41:00

GSMWCDMA的

2009-07-30 18:50:32

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

2013-12-11 21:44:01

OpenStack對象Swift

2009-12-18 16:27:41

Ruby解析Json

2009-09-28 11:05:29

Ruby端口掃描
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产v日韩v亚洲 | 成人午夜免费福利视频 | 亚洲永久 | 久久tv在线观看 | 国产美女久久 | 国产在线观看免费 | 香蕉一区| 在线成人av | 久久精品中文字幕 | 免费99视频 | 91精品欧美久久久久久久 | 一级欧美一级日韩片 | 亚洲国产二区 | 日本不卡免费新一二三区 | 亚洲人在线播放 | 国产激情一区二区三区 | 国产成人综合一区二区三区 | 久久久久国产精品人 | 手机看片1 | 999热视频 | 国产一区二区黑人欧美xxxx | av av在线| 成人国产在线观看 | 自拍偷拍精品 | 亚洲欧美中文日韩在线v日本 | 亚洲一区二区免费视频 | 黄网站免费在线看 | 范冰冰一级做a爰片久久毛片 | 国产成人久久精品一区二区三区 | 欧美日韩国产一区二区三区 | 性生生活大片免费看视频 | 欧美成人免费在线 | 日韩一区在线视频 | 国产一区二区三区www | 色综合色综合 | 午夜在线视频 | 亚洲成人免费视频在线观看 | 韩日一区二区 | 色天天综合 | 亚洲高清三级 | 中文字幕视频一区二区 |