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

如何實現Ruby向對象發送消息

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

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

我們可以直接實現Ruby向對象發送消息:

  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可以使程序更加動態,下面我們看看一個例子:

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

  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這樣優美的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向對象發送消息的一些方法技巧講解。

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

2024-12-19 10:00:00

Python發送消息編程

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

2014-09-24 11:32:21

微信企業號開發

2009-12-14 11:12:55

Ruby運行

2009-12-15 10:10:42

Ruby過程對象

2009-12-15 13:59:42

Ruby對象操作

2009-12-18 13:49:40

Ruby Watir

2025-01-10 08:20:00

MQ消息架構

2020-08-26 07:17:19

通信

2024-03-22 12:10:39

Redis消息隊列數據庫

2009-07-30 18:50:32

C#發送消息C#應用程序

2009-04-01 10:41:00

GSMWCDMA的

2013-12-11 21:44:01

OpenStack對象Swift

2009-12-16 14:04:04

Ruby對象初始化

2009-12-18 17:29:02

Ruby創建XML
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品欧美一区二区三区不卡 | 日一日操一操 | 中文字幕国产日韩 | 国产偷录视频叫床高潮对白 | 亚洲三区在线观看 | 手机看片169 | av在线一区二区 | 亚洲精品成人 | 国产精品美女久久久久aⅴ国产馆 | 久久精品国产99国产精品 | 久久国产精品网 | av资源网站 | 国产99小视频 | 国产一区二区在线免费 | 人人九九| 国产一区二区三区在线 | 欧洲精品在线观看 | 亚洲三区在线播放 | 国产视频亚洲视频 | 日本a视频 | 视频一区在线 | 最新日韩在线 | 精品久久久久久久久久 | 久久久久久国产精品免费免费男同 | 亚洲最大av网站 | 涩涩视频在线播放 | 免费av电影网站 | 一级特黄在线 | 亚洲香蕉 | a在线观看| 黄色网址免费看 | 国产免费一区二区 | 操久久 | 午夜在线小视频 | 在线中文字幕av | 成人免费视频网址 | 久久精品视频在线观看 | 另类专区成人 | www.亚洲 | 久久久久久久久久久丰满 | 国产精品久久久久久久久久久免费看 |