成人免费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-02-23 17:59:52

WSIT連接WCF

2010-03-04 09:58:32

安裝Python

2009-08-18 15:49:19

C# 操作Excel

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監聽通話

2009-12-28 17:48:01

WPF界面布局

2010-08-25 14:37:38

snort入侵檢測

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技術棧公眾號

主站蜘蛛池模板: 一本大道久久a久久精二百 国产成人免费在线 | 精品国产乱码久久久久久1区2区 | 手机在线一区二区三区 | 日韩精品一区二区在线 | 欧美男人的天堂 | 亚洲视频在线观看 | 欧洲一级视频 | 久久精品视频91 | 欧美大片久久久 | 亚洲免费在线 | 日韩在线精品 | 九九亚洲 | 在线日韩av电影 | 日本中出视频 | 亚洲视频 欧美视频 | 日本黄色影片在线观看 | 久久久久久综合 | 国产h在线 | 日本黄色免费片 | 超碰成人免费 | 国产小视频在线 | 99国产精品久久久久久久 | 欧美视频二区 | 91精品国产综合久久精品 | 精品国产欧美一区二区 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 91精品国产91久久久久久最新 | 亚洲午夜视频 | 日韩免费视频一区二区 | 国产午夜精品久久久久 | 成人夜晚看av | 精品国产欧美一区二区 | 视频一区二区在线 | 午夜免费视频 | 久久一起草 | 国产精品网址 | 国产高清在线视频 | 亚洲激情在线观看 | 北条麻妃99精品青青久久主播 | 国产一区二区三区在线 | 成人欧美一区二区三区1314 |