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

如何正確實現(xiàn)Ruby創(chuàng)建可參數(shù)化類

開發(fā) 開發(fā)工具
Ruby創(chuàng)建可參數(shù)化類的實現(xiàn)對于剛剛接觸Ruby語言不久的朋友是一個比較難掌握的知識,我們需要不斷的從實踐中去了解其中的含義。

Ruby語言在實際使用中會創(chuàng)建許多類,來滿足我們的整體編程需求。對于初學(xué)者來說,我們必須熟練地掌握創(chuàng)建類的方法,比如Ruby創(chuàng)建可參數(shù)化類等等。#t#

如果我們要創(chuàng)建很多類,這些類只有類成員的初始值不同,我們很容易想起:

  1. class IntelligentLife # Wrong 
    way to do this!   
  2. @@home_planet = nil   
  3. def IntelligentLife.home_planet   
  4. @@home_planet   
  5. end   
  6. def IntelligentLife.home_planet=(x)   
  7. @@home_planet = x   
  8. end   
  9. #...   
  10. end   
  11. class Terran < IntelligentLife   
  12. @@home_planet = "Earth"   
  13. #...   
  14. end   
  15. class Martian < IntelligentLife   
  16. @@home_planet = "Mars"   
  17. #...   
  18. end  

這種Ruby創(chuàng)建可參數(shù)化類方式是錯誤的,實際上Ruby中的類成員不僅在這個類中被所有對象共享,實際上會被整個繼承體系共享,所以我們調(diào)用Terran.home_planet,會輸出“Mars”,而我們期望的是Earth一個可行的方法:

我們可以通過class_eval在運行時延遲求值來達(dá)到目標(biāo):

  1. class IntelligentLife   
  2. def IntelligentLife.home_planet   
  3. class_eval("@@home_planet")   
  4. end   
  5. def IntelligentLife.home_planet=(x)   
  6. class_eval("@@home_planet = #{x}")   
  7. end   
  8. #...   
  9. end   
  10. class Terran < IntelligentLife   
  11. @@home_planet = "Earth"   
  12. #...   
  13. end   
  14. class Martian < IntelligentLife   
  15. @@home_planet = "Mars"   
  16. #...   
  17. end   
  18. puts Terran.home_planet # Earth   
  19. puts Martian.home_planet # Mars  

最好的Ruby創(chuàng)建可參數(shù)化類方法:

我們不使用類變量,而是使用類實例變量:

  1. class IntelligentLife   
  2. class << self   
  3. attr_accessor :home_planet   
  4. end   
  5. #...   
  6. end   
  7. class Terran < IntelligentLife   
  8. self.home_planet = "Earth"   
  9. #...   
  10. end   
  11. class Martian < IntelligentLife   
  12. self.home_planet = "Mars"   
  13. #...   
  14. end   
  15. puts Terran.home_planet # Earth   
  16. puts Martian.home_planet # Mars  

 

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

2010-01-06 15:56:18

.Net Framew

2009-12-08 14:31:31

PHP命令行讀取參數(shù)

2009-12-29 18:09:00

Silverlight

2010-02-25 10:10:29

WCF使用Header

2009-12-21 10:09:26

WCF創(chuàng)建客戶端服務(wù)對

2009-12-03 11:11:57

PHP網(wǎng)站優(yōu)化

2010-02-25 13:48:23

WCF動態(tài)創(chuàng)建代碼

2009-12-11 17:52:21

PHP獲取博客數(shù)據(jù)

2009-12-07 18:42:55

PHP與Javascr

2009-12-04 12:51:27

PHP functio

2010-01-22 13:08:50

VB.NET創(chuàng)建數(shù)組

2009-12-09 16:49:09

PHP顯示文章發(fā)布時間

2010-04-29 17:31:56

Oracle存儲過程

2010-03-04 15:12:33

Python算法

2010-03-04 11:12:02

Python AOP

2010-01-15 16:03:48

VB.NET重載Win

2010-02-24 10:07:48

WCF跨越邊界

2020-10-15 10:51:05

云計算IT技術(shù)

2019-05-07 10:21:48

人工智能AI

2009-12-08 19:29:10

PHP生成唯一標(biāo)識符
點贊
收藏

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

主站蜘蛛池模板: 午夜男人的天堂 | 成人小视频在线免费观看 | 无码一区二区三区视频 | 欧美乱大交xxxxx另类电影 | 日韩第一页 | 91天堂 | 国产精品美女久久久久久免费 | 国产亚洲精品久久久久久牛牛 | 国产一区二区三区四区 | 国产一区在线免费观看视频 | 秋霞av国产精品一区 | 久久综合久久久 | 日韩视频在线一区 | 99小视频 | 国产成人久久精品 | 久久久久久久一区 | 高清不卡毛片 | 狠狠操狠狠操 | 91视频三区 | 成人免费影院 | 在线观看亚洲专区 | 美女福利视频一区 | 天天影视亚洲综合网 | 小川阿佐美pgd-606在线 | 国产精品不卡一区 | 国产综合精品一区二区三区 | 91精品国产手机 | 国产精品毛片久久久久久 | 国产精品福利视频 | av天天澡天天爽天天av | 日韩av黄色 | 日韩视频区 | 日本中文字幕一区 | 欧美黄a | 国产一区二区黑人欧美xxxx | 亚洲91av | 欧美在线观看免费观看视频 | 亚洲欧美日韩电影 | 日日干日日色 | 午夜影院视频在线观看 | 毛片网站免费观看 |