module#instance_methods, #private_instance_methods, #public_instance_methods
在1.9中返回乙個由symbol構成的陣列,而不是string陣列
class x; def foo; end; end
x.instance_methods(false) # => [:foo] in 1.9, ["foo"] in 1.8
module#const_defined?, #const_get
在1.9中可以接受乙個額外的引數,指明是否要把父類的const也考慮進來,預設是true
module a; x=1; end
module b; include a; end
b.const_defined? "x" # => true
b.const_defined? "x", false # => false
b.const_get "x", false # uninitialized const exception
#class_variable_set, #class_variable_get
現在是public method了, 1.8裡面這個方法是private的
class aa; self; end.class_variable_set(:@aa, "foo") # =>"foo" in 1.9, throw nomethoderror in 1.8
單間類現在是物件的類的子類
很難理解的乙個特性,比較
class x; end
x = x.new; class << x; self < x; end # => true in 1.9, nil in 1.8
為了搞清楚單件類(singleton)的概念,可以看看
這篇文章先。但是從這篇文章出發,似乎1.8裡面上面的片斷也應該返回true才對啊?這個改動大概是乙個bug fix? 達人指教。
增加module.module_exec方法
和object#instance_exec類似
binding#eval
a = 1
binding.eval("a") # => 1 in 1.9, nomethoderror throws in 1.8
沒有採納的feature:
* module#method_defined?可以接受第二個引數指明是否把父類的方法包括進來
* module#class_variable_defined?至少從1.8.6開始就有了
* 使用attr :foo=來定義attr_accessor
* 子類不再能訪問類變數
ruby 1.9 (1): 新語法
ruby 1.9 (2): 核心與物件...
ruby 類和模組
1 所有的類名必須以大寫字母開頭,self關鍵字表示定義的類 類例項 ruby view plain copy class point attr accessor x,y include enumerable def initialize x 0,y 0 x x y y end 這裡並沒有做型別檢查...
Ruby 1 9概要(3)類和模組
三 類和模組 1 module instance methods,private instance methods,public instance methods module這三個方法都將返回方法名 的symbol組成的陣列,而非過去的字串陣列。2 module const defined?con...
Ruby 類和物件
ruby是一種物件導向程式設計語言,具有物件導向的特性 封裝 抽象 繼承和多型性。在ruby中,類以關鍵字class開始,後面跟類名 應大寫 以end結束。例如 class customer end1.2 變數 ruby提供四種型別的變數 區域性變數 區域性變數是在方法中定義的變數。區域性變數在方法...