ruby學習之,數據 表達式 控制

因爲我用習慣了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.正則表達式...................................專門給一章講述

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 可看究竟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章