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

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

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

Ruby語言在實際使用中會創(chuàng)建許多類,來滿足我們的整體編程需求。對于初學者來說,我們必須熟練地掌握創(chuàng)建類的方法,比如Ruby創(chuàng)建可參數化類等等。#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)建可參數化類方式是錯誤的,實際上Ruby中的類成員不僅在這個類中被所有對象共享,實際上會被整個繼承體系共享,所以我們調用Terran.home_planet,會輸出“Mars”,而我們期望的是Earth一個可行的方法:

我們可以通過class_eval在運行時延遲求值來達到目標:

  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)建可參數化類方法:

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

  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  

 

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

2010-01-06 15:56:18

.Net Framew

2009-12-08 14:31:31

PHP命令行讀取參數

2009-12-03 11:11:57

PHP網站優(yōu)化

2009-12-21 10:09:26

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

2009-12-29 18:09:00

Silverlight

2010-02-25 10:10:29

WCF使用Header

2010-02-25 13:48:23

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

2009-12-04 12:51:27

PHP functio

2009-12-11 17:52:21

PHP獲取博客數據

2009-12-07 18:42:55

PHP與Javascr

2010-01-22 13:08:50

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

2009-12-09 16:49:09

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

2010-01-15 16:03:48

VB.NET重載Win

2010-02-24 10:07:48

WCF跨越邊界

2010-04-29 17:31:56

Oracle存儲過程

2010-03-04 15:12:33

Python算法

2010-03-04 11:12:02

Python AOP

2019-05-07 10:21:48

人工智能AI

2020-10-15 10:51:05

云計算IT技術

2009-12-08 19:29:10

PHP生成唯一標識符
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费视频 | 日韩在线视频一区 | 天天干天天爱天天爽 | 久久国产欧美日韩精品 | 国产一区二区三区视频 | 亚洲天天干 | 黄色片网站在线观看 | 91久久网站| 久久久资源 | 91xxx在线观看 | 亚洲国产欧美日韩 | 久久视频精品 | 欧美老妇交乱视频 | 亚洲色欧美另类 | 国产大学生情侣呻吟视频 | 国产成人精品一区二区 | 久久久久久久久久影视 | 伊人伊人伊人 | 国产精品毛片无码 | 国产成人精品福利 | 一区二区在线看 | 日韩欧美中文在线 | 精品国模一区二区三区欧美 | 国产美女黄色片 | 免费观看成人性生生活片 | 国产伦精品一区二区三区视频金莲 | 国产婷婷色综合av蜜臀av | h视频免费在线观看 | 国产三级日本三级 | 国产综合久久 | 久久天天躁狠狠躁夜夜躁2014 | 精品在线一区 | 一区二区在线免费观看 | 色射综合| 色噜噜亚洲男人的天堂 | 91精品久久久久久久久 | 午夜视频在线免费观看 | 日韩av一区二区在线观看 | 国产精品久久久久久久久久三级 | 九九热这里 | 午夜在线精品 |