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

Ruby對(duì)象操作方法探討

開發(fā) 開發(fā)工具
Ruby作為一種完全面向?qū)ο蟮哪_本語言,在學(xué)習(xí)的時(shí)候,當(dāng)然要了解Ruby對(duì)象操作的具體方法。這樣才能真正了解Ruby語言的含義。

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

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

  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   

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

  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   

這個(gè)class被叫做singleton class,因?yàn)檫@個(gè)class是針對(duì)b這個(gè)對(duì)象的。和設(shè)計(jì)模式singleton object類似,只會(huì)發(fā)生一次的東東我們叫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,這是個(gè)很有用的技術(shù),他可以定義class級(jí)別的helper方法,然后在這個(gè)class的其他的定義中使用。下面一個(gè)Ruby對(duì)象操作列子定義了訪問函數(shù),我們希望訪問的時(shí)候把成員數(shù)據(jù)都轉(zhuǎn)化成string,我們可以通過這個(gè)技術(shù)來定義一個(gè)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對(duì)象操作給你的對(duì)象添加行為,module里面的方法變成了對(duì)象里面的實(shí)例方法:

  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 

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

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

2010-01-15 17:51:51

VB.NET創(chuàng)建臨時(shí)文

2010-02-01 09:40:08

Python操作

2010-03-04 09:58:32

安裝Python

2009-12-30 14:28:06

Silverlight

2010-02-23 17:59:52

WSIT連接WCF

2010-03-05 13:48:24

Python for

2009-12-31 11:35:20

Silverlight

2009-09-18 10:58:31

C#數(shù)組操作

2009-08-18 15:49:19

C# 操作Excel

2011-03-29 10:16:47

Jave枚舉

2009-12-28 17:48:01

WPF界面布局

2009-12-30 15:53:28

Silverlight

2010-08-25 14:37:38

snort入侵檢測(cè)

2010-09-08 15:47:08

JavsScriptJavaScript

2010-01-05 15:43:13

.NET Framew

2010-01-28 14:01:32

Android監(jiān)聽通話

2009-12-16 14:04:04

Ruby對(duì)象初始化

2009-09-15 23:21:17

Linq插入數(shù)據(jù)

2009-12-30 16:48:52

Silverlight

2010-03-04 14:32:24

Python自動(dòng)下載文
點(diǎn)贊
收藏

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