標籤:
1)有關類、對象、方法、變數等的相關知識
class Fixnum #Ruby下的數值的類型是Fixnum或者Bignum @@words = ["zero","one","two","three"]; #類方法 alias original_addition + #使用alias重新命名關鍵詞 def say #向Fixnum中添加新的對象方法 p @@words[self.to_i]; #self表示對象自身 end def +(value) #重定義+方法 original_addition(value).succ #succ表示下一個數字 end class << self #Ruby下定義類方法的常用方法,在此中的test和test1皆是類方法 def test end def test1 end endend
Ruby中的
方法:類方法、對象方法、單態方法等
類中涉及的變數:全域變數($開頭)、類變數(@@開頭)、執行個體變數(@開頭)、常量(全部字母大寫)
對象:對象是new出的(new方法在Object中定義,其他類皆繼承於此),另外就如1、232、"asdf"等這樣的基礎對象
2)代碼塊相關知識
對帶有代碼塊方法的調用可以使用do...end或者{...}。盡量在進行迭代的時候用do... end,對代碼塊進行資源管理時用{...},兩者作用相同,但{}優先順序高於do...end
a)do...end
1 array = [1,2,3,"a",:a,:b];2 array.each do |i| #使用do..end來指定代碼塊,進行數組內的迴圈3 puts i if i.is_a?(Numeric)4 end
array.each_with_index do |item,i| #數組的each_with_index方法包括元素和下標的值
p [item,i];
end
b){...}
1 a=[1,34,21,2,30,563]2 p a.sort{|x,y| case 3 when x.to_s.length>y.to_s.length then 14 when x.to_s.length<y.to_s.length then -15 else 06 end}
c)使用yield來替代代碼塊,即需要調用代碼塊的時候就用yield
(a)帶參數的yield
1 def one_block2 for num in 1..33 yield(num) #調用的就是do...end間的代碼,num作為程式碼片段中的|i|參數傳入4 end5 end6 one_block do |i|7 puts "This is block #{i}. " # #{exp}將值插入字串中,支援所有的逸出字元,此處將數值轉變成了字串。8 end
(b)有多段代碼塊時yield如何匹配
1 def do_something 2 yield 3 end 4 5 do_something do 6 (1..9).each {|i| print i if i<5} 7 puts 8 end 9 do_something do10 3.times { print "Hi!" }11 puts12 end
輸出
1234
Hi!Hi!Hi!
3)Ruby中%的用法
%Q(.....) 表示的是雙引號字串
%q(.....) 表示的是單引號字串
%w(.....) 表示其中元素被雙引號括起的數組. eg. => %W(#{foo} Bar Bar\ with\ space) #=> ["Foo", "Bar", "Bar with space"]
等,參見:
http://www.jb51.net/article/49868.htm
Ruby學習筆記0505