如果使用 respond_to? 這個方法,就可以實現判斷物件能否響應給定的訊息了,
這樣即使obj不能響應talk,也不會使**產生錯誤退出,我們也可以應用 respond_to? 方法,根據物件的屬性,在程式執行時靈活的控制。
obj = object.new
if obj.respond_to?("talk")
obj.talk
else puts"sorry ,object can't talk!"
end
與 respond_to? 相對應,send 方法和點操作符一樣,用來給物件傳送訊息,str.upcase ,用 send 可以寫成 str.send("upcase")
不同的是send 傳送的訊息,在程式執行時是可變的,我們可以根據不同的輸入,動態的向物件傳送不同的訊息。
比如乙個圖書管理系統,每本書都有諸如作者、出版社、日期、價錢這些,我們要根據使用者的輸入查詢某本書的屬性,如果不用send,我們要對程式的輸入做乙個乙個的測試:
print "search for: "
request = gets.chomp
if request == "writer"
puts book.writer
elsif request == "press"
puts book.press
elseif request == "date"
puts book.date
......
使用send就簡單多了:
print "search for"
request = gets.chomp
if book.requend_to?(requesd)
puts book.requesd
else
puts "input error"
end
ruby中的模組
什麼是模組 模組 module 是ruby特有的功能之一。類用來表現具有資料與行為 程式 的 東西 而模組大致來說,則是只有程式部分的集合體。類與模組最大的不同在於 1.模組不能建立例項 2.模組不能繼承 模組的用法 1 提供命名空間 命名空間 namespace 是為了讓方法 常數 類名稱不互相衝...
Ruby中的迴圈
1 首先是while迴圈和until迴圈 這是兩種相反的迴圈,舉例說明 x 1 until x 100 puts x x x 2 end 輸出 124 8163264 x 1 until x 100 puts x x x 2 break if x 200 end 永遠都不會執行 而while與unt...
ruby 中的符號
1.1 建立乙個繫結到特定物件的class a my string class book to sym 2.book 3.track.to s 4.track 2.相同的符號是乙個物件,相同的字元並不一定是乙個物件 這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起...