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

Ruby對象操作方法探討

開發 開發工具
Ruby作為一種完全面向對象的腳本語言,在學習的時候,當然要了解Ruby對象操作的具體方法。這樣才能真正了解Ruby語言的含義。

有些剛剛學習編程的人員見到Ruby這個詞的是很,可能會很迷茫,不知道這是個什么東西。其實它是一種解釋型編程語言,能夠幫助我們簡便的完成許多操作。比如Ruby對象操作等等。#t#

Ruby不僅可以打開一個類,而且可以打開一個對象,給這個對象添加或定制功能,而不影響其他對象:

  1. a = "hello"   
  2. b = "goodbye"   
  3. def b.upcase   
  4. gsub(/(.)(.)/)($1.upcase + $2)   
  5. end   
  6. puts a.upcase #HELLO   
  7. puts b.upcase #GoOdBye   

我們發現b.upcase方法被定制成我們自己的了。如果想給一個對象添加或定制多個功能,我們不想多個def b.method1 def b.method2這么做我們可以有更模塊化的Ruby對象操作方式:

  1. b = "goodbye"   
  2. class << b   
  3. def upcase # create single method   
  4. gsub(/(.)(.)/) { $1.upcase + $2 }   
  5. end   
  6. def upcase!   
  7. gsub!(/(.)(.)/) { $1.upcase + $2 }   
  8. end   
  9. end   
  10. puts b.upcase # GoOdBye   
  11. puts b # goodbye   
  12. b.upcase!   
  13. puts b # GoOdBye   

這個class被叫做singleton class,因為這個class是針對b這個對象的。和設計模式singleton object類似,只會發生一次的東東我們叫singleton.

self 給你定義的class添加行為

  1. class TheClass   
  2. class << self   
  3. def hello   
  4. puts "hello!"   
  5. end   
  6. end   
  7. end   
  8. TheClass.hello #hello! 

 
self修改了你定義class的class,這是個很有用的技術,他可以定義class級別的helper方法,然后在這個class的其他的定義中使用。下面一個Ruby對象操作列子定義了訪問函數,我們希望訪問的時候把成員數據都轉化成string,我們可以通過這個技術來定義一個Class-Level的方法accessor_string:

  1. class MyClass   
  2. class << self   
  3. def accessor_string(*names)   
  4. names.each do |name|   
  5. class_eval <<-EOF   
  6. def #{name}   
  7. @#{name}.to_s   
  8. end   
  9. EOF   
  10. end   
  11. end   
  12. end   
  13. def initialize   
  14. @a = [ 1, 2, 3 ]   
  15. @b = Time.now   
  16. end   
  17. accessor_string :a, :b   
  18. end   
  19. o = MyClass.new   
  20. puts o.a # 123   
  21. puts o.b # Fri Nov 21 
    09:50:51 +0800 2008  

通過extend module的Ruby對象操作給你的對象添加行為,module里面的方法變成了對象里面的實例方法:

  1. Ruby代碼   
  2. module Quantifier   
  3. def any?   
  4. self.each { |x| return true 
    if yield x }   
  5. false   
  6. end   
  7. def all?   
  8. self.each { |x| return false 
    if not yield x }   
  9. true   
  10. end   
  11. end   
  12. list = [1, 2, 3, 4, 5]   
  13. list.extend(Quantifier)   
  14. flag1 = list.any? {|x| x > 5 } # false   
  15. flag2 = list.any? {|x| x >= 5 } # true   
  16. flag3 = list.all? {|x| x <= 10 } # true   
  17. flag4 = list.all? {|x| x % 2 == 0 } # false 

以上就是對Ruby對象操作的一些使用方法介紹。

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

2010-01-15 17:51:51

VB.NET創建臨時文

2010-02-01 09:40:08

Python操作

2009-12-31 11:35:20

Silverlight

2010-03-05 13:48:24

Python for

2009-09-18 10:58:31

C#數組操作

2009-12-30 14:28:06

Silverlight

2010-03-04 09:58:32

安裝Python

2010-02-23 17:59:52

WSIT連接WCF

2009-12-30 15:53:28

Silverlight

2010-01-05 15:43:13

.NET Framew

2010-09-08 15:47:08

JavsScriptJavaScript

2011-03-29 10:16:47

Jave枚舉

2010-01-28 14:01:32

Android監聽通話

2010-08-25 14:37:38

snort入侵檢測

2009-12-28 17:48:01

WPF界面布局

2009-08-18 15:49:19

C# 操作Excel

2009-12-16 14:04:04

Ruby對象初始化

2009-12-30 16:48:52

Silverlight

2010-03-04 14:32:24

Python自動下載文

2010-03-15 15:18:23

Python運行
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成年网站在线观看 | 欧美亚洲另类在线 | 亚洲逼院 | 91精品国产91久久综合桃花 | 亚洲成av人影片在线观看 | 99精品99久久久久久宅男 | 九九免费在线视频 | 91国在线视频 | 亚洲 欧美 另类 日韩 | 中文字幕乱码一区二区三区 | 九九视频网 | 精品国产18久久久久久二百 | 亚洲另类视频 | 欧美区日韩区 | 国产精品视频网站 | 亚洲成人一二区 | 一级黄在线观看 | 日本不卡视频 | 人人澡人人射 | 亚洲视频在线观看 | 精品一区二区久久久久久久网精 | 午夜私人影院在线观看 | 日韩欧美国产一区二区 | 欧美999| 精品视频一区二区三区 | 中文天堂在线一区 | 久久精品一级 | 一a一片一级一片啪啪 | 日本成人三级电影 | 欧美a在线 | 91黄色免费看 | 国产小u女发育末成年 | 亚洲精品一区中文字幕乱码 | 国产人免费人成免费视频 | 91五月婷蜜桃综合 | 天天综合天天 | 国产精品久久久久久238 | 四虎最新地址 | 日韩午夜影院 | 久久亚洲一区二区三区四区 | 风间由美一区二区三区在线观看 |