走近Ruby交互式解釋器irb

      網友投稿 960 2022-05-29

      irb是一個交互式的Ruby解釋器,這意味著它不用處理文件,而是處理會話中所輸入的代碼。irb是一個很好的工具,可以用于測試Ruby代碼,同時也是一個學習Ruby的好工具。

      在命令行中輸入irb,就可以開啟irb會話,irb將顯示以下提示符:

      $?irb2.1.0?:001?>

      正如之前所述,還可以使用--simple-prompt選項使irb輸出更為簡單明了:

      $?irb?--simple-prompt>>

      irb一旦啟動,便可以輸入Ruby命令。這里可以運行單次攝氏-華氏度轉換程序。在本例中,irb就像一個可裝入口袋的計算器:它能計算任何輸入并打印結果。因此不必使用print或者puts命令:

      >>?100?*?9?/?5?+?32=>?212

      如果想要知道一年有多少分鐘,就輸入適當的乘法計算表達式:

      >>?365?*?24?*?60=>?525600

      當然,irb也會處理輸入的Ruby指令。比如,將天數、小時數、分鐘數賦值給變量,然后將這些變量的值相乘,可以在irb中這樣做:

      >>?days?=?365=>?365>>?hours?=?24=>?24>>?minutes?=?60=>?60>>?days?*?hours?*?minutes =>?525600

      上面就是期望的計算結果。但是看一下上面條目的前3行,當輸入days = 365的時候,irb會相應輸出365,為什么?

      表達式days = 365是一個賦值表達式:將值365賦給了名為days的變量。賦值表達式最重要的任務就是將值賦給變量,因此可以在之后使用該變量。但是賦值表達式(days = 365這一整行)也有一個值,賦值表達式的值就是它右邊的值。當irb發現任何表達式時,它就會輸出這個表達式的值。因此,當irb發現days = 365時,它就輸出365。這看起來有些輸出過度,這是因為其處在irb之中,與在irb中輸入2+2就看到了結果,而沒有顯式地使用print語句去打印結果是同樣的道理。

      同樣,調用puts方法也有一個返回值,名為nil。假如在irb中輸入一個puts語句,irb將會嚴格地執行它,同時還會打印輸出puts的返回值。

      $?irb?--simple-prompt >>?puts?"Hello"Hello =>?nil

      這里有一種方法可以讓irb不再喋喋不休,即使用-noecho參數。下面展示它如何使用:

      $?irb?--simple-prompt?--noecho>>?2?+?2>>?puts?"Hi"Hi

      幸好有-noecho,附加的表達式不會回顯其結果了。puts命令確實被執行了(可以看到輸出"Hi"),但是puts的返回值(nil)被屏蔽了。

      在irb中可能會卡在一個循環中,或者會話看起來像是失去響應(就好像是輸入了左雙引號而沒有輸入右雙引號,或者類似的代碼行)。重新回到控制的方法取決于系統本身,在最常見的系統中,使用Ctrl+C組合鍵可以達到這一目的。另一個方法是使用Ctrl+Z組合鍵。這是用戶的系統中直接作用于irb上,最優、最通用的中斷信息的方式。當然,如果任務被真的凍結,無響應,可以到進程或者任務管理器工具中終止irb進程。

      要從irb中正常退出,輸入exit即可。在許多系統中,Ctrl+D組合鍵同樣適用。

      偶然情況下,會遇到irb出現問題(那是說遇到致命錯誤然后結束進程),而大多數時候它會捕獲自己的錯誤,然后讓用戶繼續操作。

      一旦掌握了使用irb的竅門并用于打印輸出一切的值,以及如何關閉它,就會發現irb是一個極為有用的工具(和玩具)。

      ri和RDoc

      Ruby的源代碼采用一種能自動生成文檔的方式進行標記,然后通過一些工具解析和顯示它們,這些工具是ri和RDoc。

      最早由Dave Thomas編寫的ri(Ruby索引)和RDoc(Ruby文檔)是為Ruby程序提供文檔的關系很緊密的一對工具。ri是一個命令行工具,而RDoc體系中包含了命令行工具rdoc。ri和rdoc是獨立的程序,通過命令行來運行。(雖然用戶也可以使用Ruby程序內所提供的工具,但這里暫時不討論這方面的內容。)

      RDoc是一個文檔系統。假如在程序文件(Ruby或者C)中使用規定的RDoc格式編寫了注釋,rdoc會掃描程序文件,并抽取這些注釋,智能地(通過注釋的內容進行索引)組織它們,最后創建出漂亮的格式化文檔。在Ruby源碼樹以及許多Ruby安裝目錄的Ruby文件中,在許多的源碼文件中可以看到RDoc標記,包括了Ruby文件和C語言文件。

      ri與RDoc相互配合:它提供了一種方式用于查看RDoc萃取過和組織過的文檔信息。具體來說(雖然不是唯一的,除非用戶定制它),ri被用于組織和顯示從Ruby源文件而來的RDoc的信息。在完全安裝好Ruby的任何系統中,都可以使用一個簡單的命令行工具ri獲得關于Ruby語言的詳細信息。

      例如,下面是請求關于string對象的upcase方法的信息的方法:

      $?ri?String#upcase

      顯示如下結果:

      =?String#upcase(from?ruby?core) ------------------------------------------------------------------------------str.upcase?->?new_str ------------------------------------------------------------------------------Returns?a?copy?of?str?with?all?lowercase?letters?replaced?with?their uppercase?counterparts.?The?operation?is?locale?insensitive---only?characters``a''?to?``z''?are?affected.?Note:?case?replacement?is?effective?only?in ASCII?region. "hEllO".upcase?#=>?"HELLO"

      在String和upcase中間的散列標記(#),用于在ri命令中表明查找的實例方法,并與類方法區分。要查詢類方法,可以使用分隔符::替換#。第3章將會講述實例方法和類方法的區分。這里的要點是通過命令去處理大量的文檔。

      注意

      走近Ruby的交互式解釋器irb

      默認情況下,運行ri會通過一個分頁器(如UNIX中的more命令)輸出結果。它會在輸出的末端暫停,直到用戶點擊空格或者其他按鍵才會展示下一屏的信息,或者當所有的信息顯示完畢就會完全退出。準確地說,在這個例子中,用戶必須按下的按鍵因操作系統和分頁器不同會有所變化。空格鍵、回車鍵、Esc鍵、Ctrl+C組合鍵、Ctrl+D組合鍵和Ctrl+Z組合鍵都是很好的選擇。如果想要使用ri而不進行分頁顯示,可以在命令行使用的時候加入-T開關(ri –Ttopic)。

      本文節選自《Ruby程序員修煉之道(第2版)》

      內容簡介

      這是一本深受好評的書。它不僅是一本純Ruby的書,也不僅是一本純Rails的書,而是一本為Rails程序員“優化”過的Ruby書。

      本書從Ruby編程語言的基礎開始一直講到動態特性,其中包含大量的真實代碼示例并附有詳細的注解,對日常使用Ruby進行編程中會遇到的每個知識點都進行了清晰的講解。本書的內容由淺入深,主要包含Ruby編程語言的語法、面向對象的特性、默認對象self、控制流技術、常用的內置類、正則表達式、I/O操作,最后用大量的篇幅講述了Ruby中最值得關注的動態特性。

      本書不僅適合Ruby編程語言的初學者,也適合有經驗的開發者以及那些想要真正提升Ruby編程技術的愛好者閱讀和學習,具有極高的參考價值。

      本文轉載自異步社區。

      原文鏈接:https://www.epubit.com/articleDetails?id=NC7E3EF91EAC000017FC017318DC0AE80

      軟件開發 編程語言

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:共創共享共贏,華為云攜手伙伴發布生態聯合解決方案
      下一篇:markdown基本語法
      相關文章
      国产尤物在线视精品在亚洲| 亚洲午夜成激人情在线影院| 亚洲人成色4444在线观看| 亚洲国产精品白丝在线观看| 久久亚洲精品AB无码播放| 国内精品久久久久久久亚洲| 亚洲精品动漫人成3d在线| 亚洲成a人在线看天堂无码| mm1313亚洲精品无码又大又粗| 男人的天堂av亚洲一区2区| 亚洲第一成年网站视频| 久久久久亚洲国产AV麻豆 | 亚洲av无码专区国产乱码在线观看| 亚洲无人区午夜福利码高清完整版 | 亚洲AV无码之国产精品| 亚洲高清乱码午夜电影网| 亚洲国产高清国产拍精品| 无码亚洲成a人在线观看| 国产精品久久亚洲一区二区| 亚洲 综合 国产 欧洲 丝袜| 亚洲精品成人a在线观看| 亚洲综合在线另类色区奇米| 亚洲精品成人片在线播放 | 亚洲精品乱码久久久久蜜桃| 亚洲AV无码专区在线观看成人 | 精品国产亚洲AV麻豆| 亚洲成AⅤ人影院在线观看| 亚洲一级特黄无码片| 亚洲精品国产精品乱码在线观看 | 亚洲综合成人婷婷五月网址| 亚洲av无码专区亚洲av不卡| 狼人大香伊蕉国产WWW亚洲| 亚洲国产一区视频| 亚洲精品蜜桃久久久久久| 亚洲午夜视频在线观看| 亚洲免费视频网址| 亚洲精品永久在线观看| 亚洲高清国产拍精品青青草原 | 亚洲AV无码专区在线亚| 亚洲精品美女久久7777777 | 亚洲综合精品网站|