Ruby文法學習入門篇

來源:互聯網
上載者:User

1,與java,c#等語言中的try…catch…finally…throw 相對應, ruby中用begin/end …rescue…ensure … raise 來處理異常,retry可以用在rescue中。可以只用rescue或是ensure,兩者都使用時,rescue必須在ensure前。
2,$arr <<num 的含義是:將num作為數組的一個元素加入到$arr中。
3,類名首字母要大寫,如student,方法名和參數名應該用一個小寫字母開頭或者用一個底線開頭,如talk,is_prime。
4,@age.to_s的含義是:將數@age轉換為字串。
5,initialize是初始化方法,相當於構造器。attr_writer與attr_reader是getter與setter的簡寫形式。attr_accessor:a相當於attr_reader:a;  attr_writer:a.
6,class student < person 指的是student類繼承person類。子類繼承父類的時候,除了重寫方法,也可以添加一些新的方法,或是增強父類的方法(用關鍵字super指明)。
7,ruby語言只有重寫,沒有完全意義上的重載。
8,ruby 語言中,一個變數被賦予了某個資料類型的值,在程式中你可以隨時再賦予這個變數其它資料類型的值。
9,ruby 是動態語言,你可以改變 ruby 程式的結構,功能,在ruby程式運行中。方法、屬性可以被加入或去除,新的類或對象可以被建立,新的模組可以出現。
10,方法預設都是公有的(initialize除外,它永遠都是私人的)。
11,定義模組用module...end 。模組與類非常相似,但是:
a) 模組不可以有執行個體對象。
b) 模組不可以有子類。
調用一個模組方法,與定義模組方法一樣,要在方法名前加上模組名和一個點號“.”。模組方法提供了一個途徑,在模組的外部存取模組內部方法,無須 include 模組。
12,include 方法為一個類的所有對象包含某個模組; extend 方法為一個類的某個對象包含某個模組
13,require包含檔案,只載入一次,遇到同一檔案時自動忽略;不同路徑下的同名檔案會多次載入。 load包含檔案,載入多次,即使是相同路徑下同一檔案。
14,print arr.join(", "),"n" 意思是:將數組arr轉換成字串輸出,用", "隔開每個元素,並且換行。一個數組可以用join 方法轉換成字串,join( ) 內的參數也是一個字串,用來分隔數組的每個元素,例如:arr.join(", ")。
15,%q 用來產生單引號字串;%q用來產生雙引號字串。%q或者%q後面跟著的是分隔字元,可以是配對的! !; / /; < >; ( ); [ ] ;{ };等等。
16,ruby中,可以使用構造器顯式地建立一個Regex,也可以使用字面值形式 /正則模式/ 來建立一個Regex。
   匹配一個Regex,用“=~” ,不能用“==”。 “=~”用來比較是否符合一個Regex,返回模式在字串中被匹配到的位置,否則返回nil。
不匹配一個Regex,用“!~” ,不能用“!=”。 “!~”用來斷言不符合一個Regex,返回 true,flase。
 
ruby 語言的冗餘性、缺陷性和動態性正是現實世界的真實寫照

1,與java,c#等語言中的try…catch…finally…throw 相對應, ruby中用begin/end …rescue…ensure … raise 來處理異常,retry可以用在rescue中。可以只用rescue或是ensure,兩者都使用時,rescue必須在ensure前。
2,$arr <<num 的含義是:將num作為數組的一個元素加入到$arr中。
3,類名首字母要大寫,如student,方法名和參數名應該用一個小寫字母開頭或者用一個底線開頭,如talk,is_prime。
4,@age.to_s的含義是:將數@age轉換為字串。
5,initialize是初始化方法,相當於構造器。attr_writer與attr_reader是getter與setter的簡寫形式。attr_accessor:a相當於attr_reader:a;  attr_writer:a.
6,class student < person 指的是student類繼承person類。子類繼承父類的時候,除了重寫方法,也可以添加一些新的方法,或是增強父類的方法(用關鍵字super指明)。
7,ruby語言只有重寫,沒有完全意義上的重載。
8,ruby 語言中,一個變數被賦予了某個資料類型的值,在程式中你可以隨時再賦予這個變數其它資料類型的值。
9,ruby 是動態語言,你可以改變 ruby 程式的結構,功能,在ruby程式運行中。方法、屬性可以被加入或去除,新的類或對象可以被建立,新的模組可以出現。
10,方法預設都是公有的(initialize除外,它永遠都是私人的)。
11,定義模組用module...end 。模組與類非常相似,但是:
a) 模組不可以有執行個體對象。
b) 模組不可以有子類。
調用一個模組方法,與定義模組方法一樣,要在方法名前加上模組名和一個點號“.”。模組方法提供了一個途徑,在模組的外部存取模組內部方法,無須 include 模組。
12,include 方法為一個類的所有對象包含某個模組; extend 方法為一個類的某個對象包含某個模組
13,require包含檔案,只載入一次,遇到同一檔案時自動忽略;不同路徑下的同名檔案會多次載入。 load包含檔案,載入多次,即使是相同路徑下同一檔案。
14,print arr.join(", "),"n" 意思是:將數組arr轉換成字串輸出,用", "隔開每個元素,並且換行。一個數組可以用join 方法轉換成字串,join( ) 內的參數也是一個字串,用來分隔數組的每個元素,例如:arr.join(", ")。
15,%q 用來產生單引號字串;%q用來產生雙引號字串。%q或者%q後面跟著的是分隔字元,可以是配對的! !; / /; < >; ( ); [ ] ;{ };等等。
16,ruby中,可以使用構造器顯式地建立一個Regex,也可以使用字面值形式 /正則模式/ 來建立一個Regex。
   匹配一個Regex,用“=~” ,不能用“==”。 “=~”用來比較是否符合一個Regex,返回模式在字串中被匹配到的位置,否則返回nil。
不匹配一個Regex,用“!~” ,不能用“!=”。 “!~”用來斷言不符合一個Regex,返回 true,flase。
 
ruby 語言的冗餘性、缺陷性和動態性正是現實世界的真實寫照

#ruby_pratice_注釋.rb  從#開始到行尾單行注釋

puts 3/5

=begin
 puts 3/5
 多行注釋可以用=begin和=end;
 這也是ruby的內嵌文檔rdoc注釋,類似javadoc
 可以用命令ri從源檔案生產文檔
=end

2,標識名和變數

  ruby的標識名區分大小寫。關鍵字,不能用來當作常量,變數,方法,類或模組的名字。
  ruby使用一個約定來協助它區別一個名字的用法:名字前面的第一個字元表明這個名字的用法。局部變數、方法參數和方法名稱應該用一個小寫字母開頭或者用一個底線開頭;全域變數用美元符作為首碼 $;而執行個體變數用 @ 開頭;類變數用 @@ 開頭;類名、模組名和常量應該用大寫字母開頭。

3,資料類型

  ruby 資料類型有數字,字串,數組,雜湊表,區間,Regex。

  數字類型有整數型,浮點型。其中浮點型資料小數點後必須加數字。

  字串型是在‘’或者“”之間。

  數組的下標也是從0開始,但不同的是ruby數組的元素可以是不同類型的。如:[1,2.2,"hello",[1,2,3]]。

  區間:1..4 表示1,2,3,4;1...4表示1,2,3。

4,ruby基本的賦值用“=”來完成。

  如a=1,b=1+1   結果為:a=1,b=2

  ==比較兩個值是否相等,返回true,false                                如:a=1; b=1.0; a==b #true

  eql?比較兩個對象的值、類型是否相等,返回true,false             如:a=1; b=1.0; a.eql?(b) #flase(a為整數型,b為浮點型)

  equal?比較兩個對象在記憶體中地址是否相同,返回true,false       如:a=1.0; b=1.0; a.equal?(b) #flase   a=1.0; b=a ; a.equal?(b) # true

  <=> 比較兩個對象的大小,大於、等於、小於 分別返回1,0,-1

  === 右邊的對象是否在左邊區間之內,返回 true, flase

  =~(匹配)用來比較是否符合一個Regex,返回模式在字串中被匹配到的位置,否則返回 nil

  !~ (不匹配) 斷言不符合一個Regex,返回 true, flase

  <= < > >= 小於等於 小於 大於 大於等於

5,迴圈

  while,for,case,break等同c、c#、java大同小異,下面是一些比較特別的: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

6,異常與線程

  與c#、java中的try…catch…finally…throw 相對應, ruby中用begin/end …rescue…ensure … raise 來處理異常,retry可以用在rescue中。可以只用rescue或是ensure,兩者都使用時,rescue必須在ensure前。

 

相關文章

聯繫我們

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