Ruby 入門指南 - initialize

initialize 方法 (method) 為 Ruby 的內建名稱,主要用來使物件 (object) 初始化




在其他物件導向程式語言中,這個 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

沒有留言: