男人眼淚中的Ruby(二)

來源:互聯網
上載者:User

等待今天宿舍的小八提出來要考 DBA ,這個勾起了我的思緒。To be a DBA or to be a Programmer it's a questions。其實我個人比較傾向去做程式設計,可是綜合考慮到我的性格,感覺自己做DBA更合適一點。下午看了一下 Oracle Certified Administrator (OCA)的書,感覺沒有想象中的難,大多是資料庫的維護。可能唯一讓人感覺到難得是要求回到可愛的linux下面(不是必須的),不過還好我有些linux基礎。大家有沒有做資料庫的給我聯絡一下,有些問題想請教。

這幾天忙著鍛煉身體和找些小說調整心理,所以沒有在第一時間寫ruby系列,希望大家原諒。還好現在我的心態好些了。想起了小時候玩的《仙劍奇俠傳》裡面的詩,現在感覺其實還挺好的。

既不回頭,何必不忘。
既然無緣,何須誓言。
今日種種,似水無痕。
明夕何夕,君已陌路。

言歸正傳,下面來看看在 Ruby 裡面如何來定義一個類呢:

class MyClassendob=MyClass.new

上面就是建立一個類並且初始化一個MyClass的類的執行個體ob,文法相當簡單的,其實個人還是比較喜歡在new後面加上(),主要是害怕多了眼暈。實際上即使咱們建立的MyClass是一個空類,但是也不見他是真的 Poor  empty。他還有從Object對象繼承下來的屬性和方法啊。這裡也就引入了ruby的類層次模型,所有的類都是從Object繼承下來的,這點還是和大部分物件導向語言一樣的。謝謝他一個比較好玩的方法,就是Class.class方法,告訴別人自己是什麼類。看看下面的代碼:

puts ob.class#=>displays "MyClass"

用class方法可以輸出ob的類名,感覺這個在特定的場合還是有一定用處的。下面讓我們類有些用處,不要只會跟他爹說自己的名字,也要會說些其他的東西。

class MyClass  def saysomething    puts("Hello")  endendob=MyClass.newob.saysomething

這樣就完成一個有用的類的執行個體化和調用了。感覺對ruby的類調用明晰點了吧。下面讓類更活潑一點,除了會說,還要會學,能夠自己接受寫什麼東西,當然還都是函數嘍。

class Bird  def set_name(aName)    @myname=aName  end  def get_name    return @myname  end  def talk    return 'GiGi'  endendbluebird=Bird.newredbird=Bird.newbluebird.set_name('bluebird')redbird.set_name('redbird')puts(bluebird.get_name)puts(redbird.get_name)puts(bluebird.talk)puts(redbird.talk)

這個就是對類的一個基本的初級綜合應用了,類比了一個Bird的動作。不過感覺每次都這樣在初始化一個類之後在用class.set_name()函數是不是很麻煩,可不可以直接用class()來做啊。這裡就引出了下面的主角 Constructors 了。對於對象的初始化函數,在C#之類的都是和類名同名的函數,不過在ruby裡面就不一樣了,有一個專門的函數名字來對應 initialize()。下面看看代碼更好理解:

 

class Man  def initialize(aName,aAge)    @name=aName    @age=aAge  end  def get_name    return @name  end  def get_age    return @age  end  def to_s    return 'Good!!!'  endendsuperman=Man.new('jesse',21)puts(superman.get_name)puts(superman.get_age)puts(superman.to_s)

這裡面的代碼展示了initialize()這個建構函式的使用方法,後面還提到了函數的重載。我重載了to_S函數,來實現自己所謂的toString,感覺更好點。其實有時候感覺動態語言真正的牛逼在於它的動態,反映在反射機制上面了,下面通過一角,看看ruby的反射。輸入下面代碼

superman.inspectp(superman)
看到了下面的這個內容

#<Man:0x28bdb64 @age=21, @name="jesse">
nil

inspect就是ruby對象的自省函數啦。這裡的superman是一個Man類型的執行個體,後面的數字是ruby虛擬機器用的物件識別碼。@age和@name都是這個對象執行個體的值。這裡你可以想到什麼,自己考慮吧。明天在寫了,繼續努力...

 
 
 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.