因爲我用習慣了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 可看究竟