1.类实例变量
2.0.0p247 :342 > class MyClass
2.0.0p247 :343?> @my_var = 1
2.0.0p247 :344?> def self.read
2.0.0p247 :345?> @my_var
2.0.0p247 :346?> end
2.0.0p247 :347?>
2.0.0p247 :348 > def write; @my_var = 2; end
2.0.0p247 :349?> def read; @my_var;end
2.0.0p247 :351?> end
类变量
class C
@@v = 1
end
2.单件方法
2.0.0p247 :319 > str = "any string paragraph"
=> "any string paragraph"
2.0.0p247 :320 > def str.title?
2.0.0p247 :321?> self.upcase == self
2.0.0p247 :322?> end
=> nil
2.0.0p247 :323 > str
=> "any string paragraph"
2.0.0p247 :324 > str.title?
=> false
2.0.0p247 :325 >
3.类方法 和 单件方法其实是一样的
4.类宏
2.0.0p247 :362 > class MyClass
2.0.0p247 :363?> attr_accessor :my_atttribute
2.0.0p247 :364?> end
5.eigenclass 单件类
2.0.0p247 :380 > class Object
2.0.0p247 :381?> def
2.0.0p247 :382 > eigenclass
2.0.0p247 :383?> class < self; self; end
2.0.0p247 :384?> end
SyntaxError: (irb):383: syntax error, unexpected '<'
class < self; self; end
^
from /Users/menxu/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'
2.0.0p247 :385 > class Object
2.0.0p247 :386?> def eigenclass
2.0.0p247 :387?> class << self;self ; end
2.0.0p247 :388?> end
2.0.0p247 :389?> end
=> nil
2.0.0p247 :390 > "abc".eigenclass
=> #<Class:#<String:0x007fdaea9fdb30>>
2.0.0p247 :391 > obj = Object.new
=> #<Object:0x007fdaea9eee78>
2.0.0p247 :392 > class << obj
2.0.0p247 :393?> def a_singleton_method
2.0.0p247 :394?> "obj#a_singleton_method()"
2.0.0p247 :395?> end
2.0.0p247 :396?> end
=> nil
2.0.0p247 :397 > obj.eigenclass
=> #<Class:#<Object:0x007fdaea9eee78>>
2.0.0p247 :398 > obj.eigenclass.superclass
=> Object
2.0.0p247 :399 > obj.a_singleton_method
=> "obj#a_singleton_method()"
2.0.0p247 :400 >
6.方法别名 alias
2.0.0p247 :412 > ob = MyAlias.new
=> #<MyAlias:0x007fdaea94e950>
2.0.0p247 :413 > ob.my_method
=> "my_method()"
2.0.0p247 :414 > ob.m
=> "my_method()"
2.0.0p247 :415 >
2.0.0p247 :416 >
7.环绕别名 在新方法中调用l老方法