ruby語言是什麼東西

一、簡介
    Ruby是日本的Yukihiro Matsumoto寫的,簡單易學的面向對象的腳本語言,像perl同樣,有豐富的文字處理、系統管理等豐富 功能,可是ruby要簡單,容易理解和擴充。跟python很相似,可是在國內遠沒有python有名。java

Ruby是一種功能強大的面向對象腳本語言,可使用它方便快捷地進行面向對象程序設計。與Perl相似,並且Ruby具備強大的文本處理功能,使文本處理變得簡單。此外還能夠方便地使用C語言來擴展Ruby的功能。
若您曾經「想要一種簡單的面向對象的語言」,或者認爲「Perl的功能雖然好用,但它的語法真讓人受不了」,又或者以爲「LISP系列語言的思想不錯,但處處都是括號真讓人討厭,最起碼算式應該按照一般的樣式書寫」。那麼,Ruby或許能讓您滿意。

概括起來,Ruby有如下優勢:
 解釋型執行,方便快捷
Ruby是解釋型語言,其程序無需編譯便可執行。
 語法簡單、優雅
語法比較簡單,相似Algol系語法。
 徹底面向對象
Ruby從一開始就被設計成純粹的面嚮對象語言,所以全部東西都是對象,例如整數等基本數據類型。
 內置正則式引擎,適合文本處理
Ruby支持功能強大的字符串操做和正則表達式檢索功能,能夠方便的對字符串進行處理。
 自動垃圾收集
具備垃圾回收(Garbage Collect,GC)功能,能自動回收再也不使用的對象。不須要用戶對內存進行管理。
 跨平臺和高度可移植性
Ruby支持多種平臺,在Windows, Unix, Linux, MacOS上均可以運行。Ruby程序的可移植性很是好,絕大多數程序能夠不加修改的在各類平臺上加以運行。
 有優雅、完善的異常處理機制
Ruby提供了一整套異常處理機制,能夠方便優雅地處理代碼處理出錯的狀況。
 擁有不少高級特性
Ruby擁有不少高級特性,例如操做符重載、Mix-ins、特殊方法等等,是用這些特性能夠方便地完成各類強大的功能。


通常認爲,他有以下特色:python

  • 簡單 
    解釋型語言(インタプリタ),因此沒必要事先編譯(コンパイル)。
    變量沒有類型的區分,雖然能夠省去類型錯誤的擔心,但也會引發編譯時候檢查的脆弱。
    變量不須要定義。
    簡單的語法,多從Eiffel繼承而來。
    不須要內存管理,系統提供GC(ガーベージコレクタ)處理機制。
  •  純的面向對象的語言
    一切都是對象,像整數等類型從開始就被設計爲對象來處理。
    class(クラス),繼承,method(メソッド)等
    (特殊方法?)特異メソッド 
    module(モジュール)によるMixin 
    迭代(イテレータ)和閉包(クロージャ)。一個在閉包開始時定義的資源在閉包結束後會被釋放, 適合於socket,數據庫鏈接,文件句柄等。
  • 腳本語言
    解釋執行
    很強的文字處理能力和正則表達式
    直接訪問OS,用ruby編寫系統程序也是可能的。
  • 其餘
    支持多種長整數,內存容許,能夠進行很大數的計算操做。
    具有異常處理能力,具有java的異常處理功能。
    dynamic loading(ダイナミックローディング )。能夠在運行時候重定義本身, 類也能夠在運行時繼承/取消繼承。
    線程。如今的ruby已經有線程的概念,Ruby2.0好像能支持本地線程。
    反射(Reflection)。Ruby能夠看到程序的內部,好比一個模塊是否含一個特定方法, 一個對象是哪一個class等等。相似java。
    擴展性。C api。
    發行許可證。基於Ruby Artistic License (BSD樣式的)和GPL。

二、環境安裝正則表達式

(1).安裝1.能夠從www.ruby-lang.org下載源代碼進行安裝。shell

(2).解壓縮源文件,進入安裝目錄數據庫

#./configuremakeexpress

#make api

#installruby

3.使用閉包

(1). 使用irb。irb是一個交互接口,在shell裏運行它,首先顯示提示符,等待輸入;用戶輸入以後,它在進行處理,把結果顯示給用戶。socket

#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。也許,更有趣的還在後面。

相關文章
相關標籤/搜索