在其他物件導向程式語言中,這個 initialize 方法通常被稱為建構子 (constructor) 。
所謂初始化就是設定好物件的實體變數 (instance variable) ,假如物件的實體變數有範圍限制,例如長、寬各不超過多少,就能夠在 initialize 方法進行設定及檢查。
就我們的 Encrypt 類別 (class) 需要的 initialize 方法其實很簡單,就是把原本 setCode 的內容移過來就好
def initialize @code = Array('a'..'z').shuffle @alph = Array('a'..'z') end
我們另外加上了一個實體變數 @alph ,這是按字母順序的英文小寫字母表,稍後編碼及解碼都需要用到。
另外,我們仍保留 setCode 方法,並將其改成
def setCode(data) @code = data.split("") end
新版的 setCode 利用參數來設定 @code ,預期 data 為字串 (string) ,利用字串的 split 方法將字串的每個字元拆解成 @code 的元素。
因為稍後我們會在 GUI 版本中的程式設置存檔功能,所儲存的正是字串型態的 @code ,因此讀取檔案自然也是字串,所以要經過這個轉換過程。
修改後的 encrypt.rb 如下
class Encrypt def initialize @code = Array('a'..'z').shuffle @alph = Array('a'..'z') end def setCode(data) @code = data.split("") end def getCode @code.join end def toEncode "toEncode" end def toDecode "toDecode" end end =begin 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:encrypt.rb 功能:示範 Ruby 程式 作者:張凱慶 時間:西元 2012 年 12 月 =end
原本 encryptdemo.rb 呼叫 setCode 要刪除,如下
require "./encrypt.rb" e = Encrypt.new puts puts e.getCode puts e.toEncode puts e.toDecode puts =begin 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:encryptdemo.rb 功能:示範 Ruby 程式 作者:張凱慶 時間:西元 2012 年 12 月 =end
執行 encryptdemo.rb ,結果如下
接下來,我們繼續設置編碼與解碼的功能吧!
中英文術語對照 | |
---|---|
方法 | method |
物件 | object |
實體變數 | instance variable |
類別 | class |
字串 | string |
您可以繼續參考
軟體開發
相關目錄
回 Ruby 入門指南
回 Ruby 教材
回首頁
參考資料
http://www.rubyist.net/~slagell/ruby/objinitialization.html
http://www.ruby-doc.org/docs/ProgrammingRuby/html/classes.html
http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
沒有留言:
張貼留言