Page 3 概述
¨ 解釋執(zhí)行:Python,Ruby,交互性很好; ¨ 編譯執(zhí)行:Pascal, C,速度較快。 n 本地執(zhí)行,如C,C++; n 虛擬機(jī)執(zhí)行,如Java, C#。
¨ 動(dòng)態(tài)語(yǔ)言,如JavaScript,Ruby; ¨ 靜態(tài)語(yǔ)言,如C++,Java。 |
語(yǔ)言 ¨ 語(yǔ)法 關(guān)鍵字 ¨ 語(yǔ)義 ¨ 語(yǔ)用
|
松本行弘(Matz) 1993
Ruby [`ru:bi](紅寶石)
Ruby 吸取了 perl 的正則表達(dá)式, python 的簡(jiǎn)單性可讀性,smalltalk 的純面向?qū)ο笳Z(yǔ)法和單繼承,LISP 的無(wú)窮嵌套的語(yǔ)法,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 運(yùn)行ruby;
-e 執(zhí)行后面的ruby腳本程序;
print 打印顯示;
hello,world 要輸出的內(nèi)容。
第二種方式:irb交互執(zhí)行
C:/Documents and Settings/Administrator>irb irb(main):001:0> print "hello world" hello world=> nil irb(main):002:0> exit |
exit: 退出irb交互式環(huán)境
第三種方式:創(chuàng)建ruby腳本
C:/Documents and Settings/Administrator>copy con helloworld.rb print "hello world" print "3*7=",3*7 ^Z 已復(fù)制 1 個(gè)文件。
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.菜單欄,工具->運(yùn)行或者F5;
Page 18 語(yǔ)法
1. 注釋
單行注釋 # 多行注釋 =begin =end
Ruby的內(nèi)嵌文檔(Rdoc)注釋,用ri命令從源文件中產(chǎn)生文檔。
Rdoc內(nèi)嵌在ruby代碼之中的,可以轉(zhuǎn)換為html文檔。
ri命令,用來(lái)查看函數(shù)說(shuō)明、類說(shuō)明。函數(shù)說(shuō)明、類說(shuō)明應(yīng)該放置在=begin和=end之中。注意:“=begin”一定要寫在行首,也就是說(shuō),這一行前六個(gè)字符是“=begin”,之前不允許有空格。
2. 分行
用分號(hào);表示語(yǔ)句結(jié)束。
一行多個(gè)語(yǔ)句,用分號(hào)隔開,最后一個(gè)語(yǔ)句,分號(hào)可以省略,換行符表示一行結(jié)束。
語(yǔ)句太長(zhǎng),可以在行末用符號(hào) / ,表示續(xù)行。
3. 分隔符
名稱 | 符號(hào) | 用途 |
分號(hào) | ; | 用來(lái)分隔一行中的多個(gè)語(yǔ)句 |
圓括號(hào) | ( ) | 提高優(yōu)先級(jí);定義方法時(shí)容納參數(shù)列表 |
空格 |
| 分隔字符;在可省略()的地方,代替() |
逗號(hào) | , | 隔開多個(gè)參數(shù) |
點(diǎn) | . | 將對(duì)象與它的方法隔開 |
緊連的兩個(gè)冒號(hào) | :: | 域作用符,將模塊(類)與它的常量隔開 |
4. 關(guān)鍵字
Ruby中的關(guān)鍵字如下:
模塊定義: | module | 異常處理: | rescue,ensure |
類定義: | class | 對(duì)象引用: | super,self |
方法定義: | def,undef | 塊的起始: | begin/end |
檢查類型: | defined? | 嵌入模塊: | BEGIN,END |
邏輯值和空值: | true,false,nil | 文件相關(guān): | __FILE__,__LINE__ |
邏輯判斷: | not,and,or | 方法返回: | return |
條件語(yǔ)句: | if,then,else,elsif,case,when,unless | 別名: | alias |
循環(huán)語(yǔ)句: | for,in,while,until,next,break,do,redo,retry,yield |
BEGIN模塊相當(dāng)于C語(yǔ)言中的宏,END模塊用來(lái)作一些收尾工作。有了
require,include,應(yīng)該取消BEGIN和END的語(yǔ)法定義。
5. 運(yùn)算符
6. 標(biāo)識(shí)名:
常量,變量,方法,類和模塊;
大小寫敏感;
標(biāo)識(shí)名第一個(gè)字符表明這個(gè)名字的用法。
局部變量、方法參數(shù)和方法名稱 | 以小寫字母開頭或者下劃線開頭; |
類名、模塊名和常量 | 用大寫字母開頭。 |
全局變量 | 以美元符為前綴$; |
實(shí)例變量 | 以@開頭; |
類變量 | 用@@開頭; |
詞首字母后面可以是字母、數(shù)字和下劃線的任意組合;
@后面不可以直接跟數(shù)字。
Ruby程序代碼用7位ACSII碼來(lái)表示,通過(guò)語(yǔ)言擴(kuò)展來(lái)支持 EUC,SJIS或UTF-8等8位編碼系統(tǒng)。Ruby2.0版本將支持16位的Unicode編碼。
7. 類庫(kù)
可以直接使用:
i) 關(guān)鍵字;
ii) require或者include包含的類庫(kù)中的類、方法;
iii)從父類中繼承得到的方法。
puts | 每個(gè)參數(shù)后自動(dòng)換行 |
不自動(dòng)換行,換行用”/n” | |
printf | 按格式輸出,不自動(dòng)換行 |
gets | 從鍵盤或文件中讀入數(shù)據(jù) |
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的參數(shù)之間用逗號(hào)隔開。
C:/Documents and Settings/Administrator>ruby -e ' printf "number:%4.3f,string %s ",1.5,"hello world"' number:1.500,string hello world |
8. 數(shù)據(jù)類型
類型 | 分類 | 說(shuō)明及示例 |
數(shù)字 | 整數(shù)型 | 0 八進(jìn)制, 0x 十六進(jìn)制,0b 二進(jìn)制 |
浮點(diǎn)型 | ||
字符串 | 單引號(hào) ‘' |
|
雙引號(hào) “” |
| |
數(shù)組 | 從0開始,每個(gè)元素可以不同類型 | 例 [2.4,"thank you",[a,b,c],78] |
區(qū)間 | 1..5 | 1,2,3,4,5 |
1…5 | 1,2,3,4 | |
正則表達(dá)式 |
|
|
9. 賦值運(yùn)算
交換變量a,b的值:
a,b=b,a;
注意括號(hào):
a = (b = 1 + 2) + 3 #a=6 ,b=3
逗號(hào),從左往右運(yùn)算,分別賦給a,b,c
x = 0 #x=0
a,b,c = x, (x+1), (x+2) #a=0 ,b=1,c=2
10. 條件運(yùn)算
== | 等于 | != | 不等于 |
eql? | 比較兩個(gè)對(duì)象的值、類型是否相等 | equal? | 比較兩個(gè)對(duì)象在內(nèi)存中地址是否相同 |
< | 小于 | > | 大于 |
<= | 小于等于 | >= | 大于等于 |
=~ | 匹配正則表達(dá)式 | !~ | 斷言不匹配正則表達(dá)式 |
=== | 右邊的對(duì)象在左邊區(qū)間內(nèi) puts(0..9)===3.14 #true puts('a'..'f')==='c' # true | <=> | 比較兩個(gè)對(duì)象大小,大于1,等于0,小于-1. |
Ruby里,nil和false為假,其它都為真。
11. 判斷語(yǔ)句
| if then end |
( ) if | |
| if elsif else end |
| unless
|
if not
| |
| case when when else end |
12. 循環(huán)語(yǔ)句
單行while | (語(yǔ)句1;語(yǔ)句2;語(yǔ)句…)while條件 |
多行while | while 條件 語(yǔ)句,語(yǔ)句 end |
until直到 | until 跳出循環(huán)條件 語(yǔ)句 until 條件=while not (條件) |
for…in循環(huán) | for 變量 in 對(duì)象 語(yǔ)句1; 語(yǔ)句2 ; 語(yǔ)句… end |
break,next&redo&retry
在循環(huán)體內(nèi),如果遇到:
break | 跳出當(dāng)層循環(huán); |
next | 忽略本次循環(huán)的剩余部分,開始下一次的循環(huán); |
redo | 重新開始循環(huán),還是從這一次開始; |
retry | 重頭開始這個(gè)循環(huán)體。 |
times , upto , downto , each ,step
語(yǔ)句 | 運(yùn)行結(jié)果 |
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,兩者都使用時(shí),rescue必須在ensure前。
14. 線程
新聞熱點(diǎn)
疑難解答
圖片精選