日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

request_do?send方法

發布時間:2023/11/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 request_do?send方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Ruby中 respond_to? 和 send 的用法 php?name=Ruby" class="t_tag">Ruby中 respond_to? 和 send 的用法 [收藏] Ruby中的字符串與符號 如同其他的OO語言一樣,在ruby中,通過給對象發送消息,來完成對象的功能,比如 str.upcase ,就是給str發送upcase的消息,點操作符(.),就是用來給對象發送消息的,str接受到消息,然后執行與消息對應的功能。 但是,某些時候,我們并不知道對象能響應哪些消息,比如下面的代碼就會產生錯誤: > obj = Object.new > obj.talk undefined method 'talk' for #<Object:0x12345678> (NoMethodError) 因為obj對象沒法響應talk這個消息,如果使用 respond_to? 這個方法,就可以實現判斷對象能否響應給定的消息了: obj = Object.new if obj.respond_to?("talk") obj.talk else puts "Sorry, object can't talk!" end 這樣即使obj不能響應talk,也不會使代碼產生錯誤退出,我們也可以應用 respond_to? 方法,根據對象的屬性,在程序運行時靈活的控制。 與 respond_to? 相對應,send 方法和點操作符一樣,用來給對象發送消息,比如文章開始的 str.upcase ,用 send 可以寫成 str.send("upcase"),它們實現的功能是完全相同的,那么為什么還要用send呢? 這是因為,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方法的話,就簡單多了: request = gets.chomp if book.respond_to?(request) puts book.send(request) else puts "Input error" end 這樣不用在逐個對用戶的輸入進行測試,只要查詢對象能否相應這個消息,再用send將輸入直接發送給對象即可。 通過 respond_to? 和 send 這兩個方法,我們可以構造更靈活和穩定的程序。

轉載于:https://blog.51cto.com/gypsyer/162292

總結

以上是生活随笔為你收集整理的request_do?send方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。