ruby中的respond to和send的用法

2021-06-09 18:30:41 字數 980 閱讀 5517

如果使用 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.相同的符號是乙個物件,相同的字元並不一定是乙個物件 這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起...