ruby學習之,資料 運算式 控制

來源:互聯網
上載者:User

因為我用習慣了java,所以一般文法會跟java對比

變數的命名:必須是單個實體(不要包含空格),必須以字母和底線開頭,區分大小寫.跟java差別不大

數字與運算式跟java差別不大

1.也會有x+=1的寫法,但是不存在x++的寫法

2.注意浮點型:10是整型,10.0是浮點型,可以用to_f和to_i互相轉換...整形->字元型to_s

3.常量:用大寫字母開頭 Pi=3.141952,與類命名相似,應為一旦定義就固化

4.文本字串:String類,單行用""號,多行用%q{},其中{}號可以用<>,()或是自選的兩個分界符!!!!!!哇!!!還可以x = <<END_MY_STRING_PLEASE直到你寫入    
END_MY_STRING_PLEASE,輸入字串才結束,當然END_MY_STRING_PLEASE可以自訂

    4-1.字串運算式,有+號,*號(複製N次),<,>,==(比較acsii碼,?A轉為acsii碼,65.chr轉為字元),我把字串轉化為數組,不就可以減咯~哇哈哈~

    4-2.插寫,在字串中加入#{...}這樣一段代碼

    4-3.字串的一般方法:capitalize,downcase,upcase,chop.next.hash.reverse

    4-4.Regex...................................專門給一章講述

5.數組

定義一個基本資料x = [1,2,3,4,5],;另外數組的不需要預定義空間 x=[],不限定類型

數組插入末尾:<<操作符,或用方法push()

數組彈出元素:使用pop方法

數組->字串:如果數組包含字元元素,可以用join合唱一個大字串 x=["a","b","c"]     x.join->"abc"    ,可以接受一個參數隔斷每個元素x.join(', ')->"a, b, c"

字串->數組:"huang zi hao".scan(/\w/)可以擷取一個以一個字元為元素的數組

                         不掃面分切,可以用split,另外幾乎所有內建類都有inspect方法將對象文本化表示"huang zi hao".split(/s+/).inspect

數組迭代:可以用each,collect或者傳統的while...end      ep:  [1,2,3,4].each{|element| puts("the number is:"+element.to_s)}

發現迴圈都可以用   |element|  獲得迭代子

數組操作:+ , -  , .empty? , .include?(xxx) , .first , .last(.first , .last可以指定參數) ,  .reverse反序  (記住inspect)

6.散列表

就是個索引值對嘛,可以是任何對象哦~

dictionary = { 'cat' => 'feline animal' , 'dog' => 'canine animal' }

puts dictionary[ 'cat' ]

迴圈: dictionary.each{ |key,value| .......}

操作:檢索x.keys.inspect,刪除x.delete("key"),有條件刪除x.delete_if{ |key,value| ....}

7.時間對象Time

控制結構

1.寫個奇怪的比較文法puts "you are too young" if age<18    ,比較操作只有<=>特別點(x<=>y,x大1,y大-1,相等0),還可以用串連符 "&&"  "||" 

     與if相反的是unless,另外age.between?(12,18)這類的方法,以後將會學到相關類的函數

來個正常點得寫法

if age<18

......//插入多行操作吧~~~~

[elseif]

[else]

exit

end

2.三目運算子  XX ? XX : XX

3.case ....  when...... when.... else

4.while ... end

5.util ... end

6.代碼塊   do.......end 或 {}

      可以自己編寫方法,處理代碼塊

7.迴圈的文法也很不同 5.times do puts("Test") end,倒是do...end有點親切感,然而也可以用{}代替do..end,但是一般單行用{},多行用do..end

    除了這個,還有1.upto(5){  |number|  ......................}//number是用來擷取迭代計算機的值(名字隨便起)

                             10.downto(5)do |number|.....................end

                              0.step(50,5){|number|....................}//從0到50,每步遞進5

   迴圈沒for爽啊......

8.範圍

('a’..'z')/(1..3)可以用to_a轉化為數組

a=[1,2,3,4,5,6,7,8,9]

puts a[1..3].inspect

 

9.符號http://zarknight.iteye.com/blog/126414

符號不包含值或對象,不象變數一樣,而是用作代碼中固定的名字。符號不會建立新對象,只是值的引用

用在散列表更有用:

person1={ :name => "Fred" , :age => 20 , :gender => :male}

person2={ :name => "Fred1" , :age => 21 , :gender => :male}

1:是Symbol類的執行個體
2: 是名稱的對象
3:符號是不可改變的字串,也不可被GC的
4:在大多數情況下,接受符號作為參數的方法也能接受字串,反過來不成立;
5:用符號要比用字串省記憶體
6:每個符號在對象空間中只出現一次:和Fixnum一樣,都存為直接值
7:有意思的Symbol#to_proc
ri Symbol 可看究竟

1:是Symbol類的執行個體
2: 是名稱的對象
3:符號是不可改變的字串,也不可被GC的
4:在大多數情況下,接受符號作為參數的方法也能接受字串,反過來不成立;
5:用符號要比用字串省記憶體
6:每個符號在對象空間中只出現一次:和Fixnum一樣,都存為直接值
7:有意思的Symbol#to_proc
ri Symbol 可看究竟

聯繫我們

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