ruby語言是什麼東西?

來源:互聯網
上載者:User
作者:http://www.ruby-cn.org/ 轉載請保留

1、簡介
    Ruby是日本的Yukihiro Matsumoto寫的,簡單易學的物件導向的指令碼語言,像perl一樣,有豐富的文文書處理、系統管理等豐富 功能,但是ruby要簡單,容易理解和擴充。跟python很類似,但是在國內遠沒有python有名。

一般認為,他有如下特點:

  • 簡單 
    解釋型語言(インタプリタ),所以不必事先編譯(コンパイル)。
    變數沒有類型的區分,雖然可以省去類型錯誤的擔憂,但也會引起編譯時間候檢查的脆弱。
    變數不需要定義。
    簡單的文法,多從Eiffel繼承而來。
    不需要記憶體管理,系統提供GC(ガーベージコレクタ)處理機制。
  •  純的物件導向的語言
    一切都是對象,像整數等類型從開始就被設計為對象來處理。
    class(クラス),繼承,method(メソッド)等
    (特殊方法?)特異メソッド 
    module(モジュール)によるMixin 
    迭代(イテレータ)和閉包(クロージャ)。一個在閉包開始時定義的資源在閉包結束後會被釋放, 適合於socket,資料庫連接,檔案控制代碼等。
  • 指令碼語言
    解釋執行
    很強的文文書處理能力和Regex
    直接存取OS,用ruby編寫系統程式也是可能的。
  • 其他
    支援多種長整數,記憶體允許,可以進行很大數的計算操作。
    具備異常處理能力,具備java的異常處理功能。
    dynamic loading(ダイナミックローディング )。可以在運行時候重定義自己, 類也可以在運行時繼承/取消繼承。
    線程。現在的ruby已經有線程的概念,Ruby2.0好像能支援本地線程。
    反射(Reflection)。Ruby可以看到程式的內部,比如一個模組是否含一個特定方法, 一個對象是哪個class等等。類似java。
    擴充性。C api。
    發行許可證。基於Ruby Artistic License (BSD樣式的)和GPL。

2、環境安裝

(1).安裝1.可以從www.ruby-lang.org下載原始碼進行安裝。

(2).解壓縮源檔案,進入安裝目錄

#./configuremake

#make 

#install

3.使用

(1). 使用irb。irb是一個互動介面,在shell裡運行它,首先顯示提示符,等待輸入;使用者輸入之後,它在進行處理,把結果顯示給使用者。

#irb

irb(main):001:0> $str="hello world!/n"

=> "hello world!/n"

irb(main):002:0> print $str

hello world!

=> nil

irb(main):003:0>

(2).像其他語言一樣,從程式檔案運行

[root@tserver /root]# chmod a+x foo.rb   

[root@tserver /root]# cat foo.rb

#!/usr/local/bin/ruby -w

puts "Hello, World!"

 

[root@tserver /root]# ruby foo.rb

Hello, World!

[root@tserver /root]# ./foo.rb

Hello,World!

[root@tserver /root]#

 

(3).Ruby使用方法 
ruby [ option ...] [ -- ] [ programfile ] [ argument ...]pre>

關於Ruby的命令列參數,可以參考相關文檔。

4.簡單例子

 

 def sayGoodnight(name) 
       result = "Goodnight, " + name
      return result
end

# Time for bed...
puts sayGoodnight("John-Boy")
puts sayGoodnight("Mary-Ellen")

    可以看到,ruby的文法還是比較簡單的,首先,你不必每行都寫個分號, Ruby注釋以#開頭,直到行尾。
    Methods定義以關鍵字def開始,接著是方法名和方法參數, ruby不需要用braces來界定程式主體,只需要關鍵字end就行了。
    這個程式也相當簡單,第一行把``Goodnight, ''加上參數name,並把它賦給了局部變數result,第二行把結果返回給調用者。注意我們不需要定義變數result。
    最後我們調用了2次這個方法,並把結果傳給puts函數,這個函數簡單的再新行上列印傳給它的參數而已,最後結果像這樣:

Goodnight, John-Boy
Goodnight, Mary-Ellen

 

      其實 puts sayGoodnight("John-Boy")  包括了2個函數調用,一個put系統函數,一個sayGoodnight函數。但是為什麼puts調用沒有用括弧呢?實際上,下面的調用都是等價的:

puts(sayGoodnight "John-Boy")
puts(sayGoodnight("John-Boy"))
puts sayGoodnight("John-Boy")
puts sayGoodnight "John-Boy"

 
       但是如果都不寫括弧,你知道那個參數傳給誰嗎?所以還是建議在方法後面加上括弧,方便閱讀來源程式。

    這個方法還展示了string對象,有很多種辦法可以建立string對象,但最普通的要算用string literals了:單引號或雙引號包起來的一組字元。它們的區別是ruby構建這兩種字串時要做的操作。對單引號引起來的字串來說,ruby做的工作會很少,單引號引起來得部分就是它的值。如果是雙引號引起來得,則要做多一些工作了。首先,它檢查是否包含反斜線,也就是轉義符,然後用適當的二進位值代替,最常見的就是"/n"了,它將會被換行替換。如:

 

puts "And Goodnight,/nGrandma"

產生結果如下:

And Goodnight,
Grandma

    第二件事情就是expression interpolation。#{ expression }被expression的值代替,例如,下面的方法和剛才的例子是一樣的結果

def sayGoodnight(name)
    result = "Goodnight, #{name}"
    return result
end

    當然我們還可以再簡化這個函數。一個ruby函數返回的結果就是最後一行的值,所以這個函數也可以寫成如下:

def sayGoodnight(name)
    "Goodnight, #{name}"
end

    Ruby使用俗定的命名方式為變數命名,變數名的第一個字母標誌了它的類型,是局部變數,還是方法參數,方法名應該以小寫字母或者底線開頭,全域變數應該以$開頭,執行個體變數以@開頭, class變數以@@開頭,而類名,模組名,常量應該以大寫字母開頭。
    一個名字可以是字母,數字,底線的任意組合,但是有@後面不允許直接跟著一個數字。
    總之,作為一門語言,不是一兩個例子,幾個文章能說清楚地,在網上流傳的我愛ruby的10個原因等跟天下足球top ten類似的短文中,總會看到一個理由,就是fun with ruby。也許,更有趣的還在後面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.