Terry七月Ruby讀書筆記(比較詳細)第1/4頁

來源:互聯網
上載者:User

Page 3 概述

¨ 解釋執行:Python,Ruby,互動性很好;

¨ 編譯執行:Pascal, C,速度較快。

n 本地執行,如C,C++;

n 虛擬機器執行,如Java, C#。

¨ 動態語言,如JavaScript,Ruby;

¨ 靜態語言,如C++,Java。

語言

¨ 文法

關鍵字

¨ 語義

¨ 語用

松本行弘(Matz) 1993

Ruby [`ru:bi](紅寶石)

Ruby 吸取了 perl 的Regex, python 的簡單性可讀性,smalltalk 的純物件導向文法和單繼承,LISP 的無窮嵌套的文法,Java的線程…

Page 14 上手

XP

Cmd

C:\Documents and Settings\Administrator>ruby -v

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

第一種方式:ruby命令

C:\Documents and Settings\Administrator>ruby -e 'print "hello world"'

hello world

ruby 運行ruby;

-e 執行後面的ruby指令碼程式;

print 列印顯示;

hello,world 要輸出的內容。

第二種方式:irb互動執行

C:\Documents and Settings\Administrator>irb

irb(main):001:0> print "hello world"

hello world=> nil

irb(main):002:0> exit

exit: 退出irb互動式環境

第三種方式:建立ruby指令碼

C:\Documents and Settings\Administrator>copy con helloworld.rb

print "hello world"

print "3*7=",3*7

^Z

已複製 1 個檔案。

C:\Documents and Settings\Administrator>helloworld.rb

hello world3*7=21

Page 17 IDE

¨ Eclipse + RDT(Ruby Development Tools)

¨ FreeRIDE+SciTE

1.在SciTE編輯Ruby代碼;

2.儲存為 .rb檔案;

3.功能表列,工具->運行或者F5;

Page 18 文法

1. 注釋

單行注釋 # 多行注釋 =begin =end

Ruby的內嵌文檔(Rdoc)注釋,用ri命令從源檔案中產生文檔。

Rdoc內嵌在ruby代碼之中的,可以轉換為html文檔。

ri命令,用來查看函數說明、類說明。函數說明、類說明應該放置在=begin和=end之中。注意:“=begin”一定要寫在行首,也就是說,這一行前六個字元是“=begin”,之前不允許有空格。

2. 分行

用分號;表示語句結束。

一行多個語句,用分號隔開,最後一個語句,分號可以省略,分行符號表示一行結束。

語句太長,可以在行末用符號 \ ,表示續行。

3. 分隔字元

名稱

符號

用途

分號

;

用來分隔一行中的多個語句

圓括弧

( )

提高優先順序;定義方法時容納參數列表

空格

分隔字元;在可省略()的地方,代替()

逗號

,

隔開多個參數

.

將對象與它的方法隔開

緊連的兩個冒號

::

域作用符,將模組(類)與它的常量隔開

4. 關鍵字

Ruby中的關鍵字如下:

模組定義:

module

異常處理:

rescue,ensure

類定義:

class

對象引用:

super,self

方法定義:

def,undef

塊的起始:

begin/end

檢查類型:

defined?

嵌入模組:

BEGIN,END

邏輯值和空值:

true,false,nil

檔案相關:

__FILE__,__LINE__

邏輯判斷:

not,and,or

方法返回:

return

條件陳述式:

if,then,else,elsif,case,when,unless

別名:

alias

迴圈語句:

for,in,while,until,next,break,do,redo,retry,yield

BEGIN模組相當於C語言中的宏,END模組用來作一些收尾工作。有了

require,include,應該取消BEGIN和END的文法定義。

5. 運算子

6. 標識名:

常量,變數,方法,類和模組;

大小寫敏感;

標識名第一個字元表明這個名字的用法。

局部變數、方法參數和方法名稱

以小寫字母開頭或者底線開頭;

類名、模組名和常量

用大寫字母開頭。

全域變數

以美元符為首碼$;

執行個體變數

以@開頭;

類變數

用@@開頭;

詞首字母后面可以是字母、數字和底線的任意組合;

@後面不可以直接跟數字。

Ruby程式碼用7位ACSII碼來表示,通過語言擴充來支援 EUC,SJIS或UTF-8等8位編碼系統。Ruby2.0版本將支援16位的Unicode編碼。

7. 類庫

可以直接使用:

i) 關鍵字;

ii) require或者include包含的類庫中的類、方法;

iii)從父類中繼承得到的方法。

puts

每個參數後自動換行

print

不自動換行,換行用”\n”

printf

按格式輸出,不自動換行

gets

從鍵盤或檔案中讀入資料

C:\Documents and Settings\Administrator>ruby -e 'puts "hello","world"'

hello

world

C:\Documents and Settings\Administrator>ruby -e 'printf "number:%f",3.2'

number:3.200000

注意:printf的參數之間用逗號隔開。

C:\Documents and Settings\Administrator>ruby -e ' printf "number:%4.3f,string %s

",1.5,"hello world"'

number:1.500,string hello world

8. 資料類型

類型

分類

說明及樣本

數字

整數型

0 八進位,

0x 十六進位,0b 二進位

浮點型

字串

單引號 ‘'

雙引號 “”

數組

從0開始,每個元素可以不同類型

例 [2.4,"thank you",[a,b,c],78]

區間

1..5

1,2,3,4,5

1…5

1,2,3,4

Regex

9. 賦值運算

交換變數a,b的值:

a,b=b,a;

注意括弧:

a = (b = 1 + 2) + 3 #a=6 ,b=3

逗號,從左往右運算,分別賦給a,b,c

x = 0 #x=0

a,b,c = x, (x+1), (x+2) #a=0 ,b=1,c=2

10. 條件運算

==

等於

!=

不等於

eql?

比較兩個對象的值、類型是否相等

equal?

比較兩個對象在記憶體中地址是否相同

<

小於

>

大於

<=

小於等於

>=

大於等於

=~

匹配Regex

!~

斷言不匹配Regex

===

右邊的對象在左邊區間內

puts(0..9)===3.14 #true puts('a'..'f')==='c' # true

<=>

比較兩個對象大小,大於1,等於0,小於-1.

Ruby裡,nil和false為假,其它都為真。

11. 判斷語句

  1. 單行if語句

if then end

( ) if

  1. 多行if語句

if elsif else end

  1. unless條件陳述式

unless

if not

  1. case分支條件陳述式

case

when

when

else

end

12. 迴圈語句

單行while

(語句1;語句2;語句…)while條件

多行while

while 條件

語句,語句

end

until直到

until 跳出迴圈條件 語句

until 條件=while not (條件)

for…in迴圈

for 變數 in 對象

語句1; 語句2 ; 語句…

end

break,next&redo&retry

在迴圈體內,如果遇到:

break

跳出當層迴圈;

next

忽略本次迴圈的剩餘部分,開始下一次的迴圈;

redo

重新開始迴圈,還是從這一次開始;

retry

重頭開始這個迴圈體。

times , upto , downto , each ,step

語句

運行結果

3.times { print "Hi!" }

#Hi!Hi!Hi!

1.upto(9) {|i| print i if i<7 }

#123456

9.downto(1){|i| print i if i<7 }

#654321

(1..9).each {|i| print i if i<7}

#123456

0.step(11,3) {|i| print i }

#0369

C:\Documents and Settings\Administrator>irb

irb(main):001:0> 1.upto(9){|i| print i if i<7}

123456=> 1

irb(main):002:0> 9.downto(1){|i|print i if i<7}

654321=> 9

irb(main):003:0> (1..9).each {|i| print i if i<7}

123456=> 1..9

irb(main):004:0> 0.step(11,3) {|i| print i}

0369=> 0

13. 異常

Java

try…catch…finally…throw

Ruby

begin/end…rescue…ensure…raise

retry可以用在rescue中。可以只用rescue或ensure,兩者都使用時,rescue必須在ensure前。

14. 線程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.