2014年9月30日 星期二

[ Ruby Gossip ] Basic : 基本指令與觀念 - irb 與 ruby 指令

Source From Here 
Preface 
你 可以至 Ruby 的官方網站 下載安裝 Ruby (JRuby),初學 Ruby,可以執行Ruby安裝目錄中的 irb 指令,啟動指令互動環 境來作些簡單的程式練習,可以自行進入文字模式,設定 PATH 中包括Ruby安裝目錄的bin目錄,再執行 irb 指令以進入指令互動環境: 
# irb
...
irb(main):001:0> 1 + 2
=> 3
irb(main):002:0>

這是Ruby的指令互動環境,可以讓你很快地撰寫一些小指令進行測試(經常的,你只是要看看某個指令這麼用對不對,或會有什麼結果),上例執行 1 + 2,=> 3 表示結果為3,如果想離開irb,可以輸入exit。預設irb提示(Prompt)較為冗長,可以執行irb時加上 --simple-prompt,顯示簡單提示字元,順便來看幾個簡單的互動: 
>> 1 + 2
=> 3
>> _
=> 3
>> 1 + _
=> 4
>> _
=> 4
>> print "Hello! Ruby!\n"
Hello! Ruby!
=> nil

這執行了 1 + 2,顯示結果為3,_ 代表了互動環境中上一次運算結果,方便你在下一次的運算中直接取用上一次的運算結果。最後一次執行了 print,這個方法可顯示指定的文字,print 不會換行,所以字串最後加上 \n 表示要換行,最後 => nil 表示 print 執行結束沒有傳回結果,這是蠻有用的資訊,如果真的不想看到,可以在執行 irb 時加上 --noecho,不過這也就不會顯示如 1+2 的執行結果: 
# irb --simple-prompt --noecho
>> print "Hello! Ruby!\n"
Hello! Ruby!
>> 1 + 2
>>

More Example 
再來看看其它的一些互動: 
 

你可以在互動中直接觀察程式碼的執行結果,Ruby 的許多定義都是以 end 結尾,如果在 irb 中輸入錯誤了,可以嘗試輸入 end 回到正常提示字元。 

你可以撰寫一個純文字檔案,建議副檔名為 .rb,在當中撰寫 Ruby 程式碼: 
- hello.rb 
  1. puts "Hello! Ruby!"  
程式中 puts 會將指定的文字輸出後換行,接著如下執行 ruby 指令啟動 Ruby 直譯器,載入指令稿直譯並執行: 
# ruby hello.rb
Hello!Ruby!

如果只是要測試一小段簡單的指令稿,不一定要寫 .rb 檔案,也不一定要進入 irb,可以在執行 ruby 指令時,於 -e 之後用單引號括住指令稿,多行程式碼時以分號區隔。例如: 
# jruby -e 'print "Hello! Ruby!\n"; puts "Hello! Ruby"'
Hello! Ruby!
Hello! Ruby

在執行 ruby 指令時,可以指定 -c 僅檢查語法但不執行程式,指定 -w 顯示額外警訊,由於 -c-w 經常一起指定,所以有個 -cw 可以達到分別指定 -c、-w 的效果。例如: 
# ruby -c -w hello.rb
Syntax OK

# ruby -cw -e 'x = 10; print (1 + x)'
-e:1: warning: (...) interpreted as grouped expression
Syntax OK

由於 Ruby 在呼叫方法時可以省略括號,上例第二個指令稿中,(1 + x) 的括號被直譯器解釋為優先執行 1 + x,而不會是 print 方法的括號,雖然就這個例子而言,哪個解釋的執行結果都相同,但有些情況下這類的解釋可能不是你想要的,於是直譯器提出了警告訊息。 

以上是常用的 ruby 指令選項,如果想知道更多選項,可以執行 ruby 時鍵入 --help 或 -h 顯示說明清單: 

Supplement: 
Next Basic : 基本指令與觀念 - load 與 require 
JRuby API 
Ruby 使用手冊

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...