Jan'uary » 日志 » Ruby 1.9 (2): 内核与对象
Ruby 1.9 (2): 内核与对象
Jan 发表于 2007-12-28 16:05:23
BasicObject
1.9增加了一个新的顶级类,很纯洁
BasicObject.instance_methods # => [:==, :equal?, :"!", :"!=", "__send__]
Object.ancestors # => [Object, Kernel, BasicObject]
注意instance_methods返回的array中现在都是symbol对象,以前是string对象.
#instance_exec
为特定的instance执行block
BasicObject.instance_methods
# => ["__send__", "__id__", "==", "send", "send!", "respond_to?", "equal?", "object_id"]
Object.ancestors # => [Object, Kernel, BasicObject]
Kernel#require
通过require载入的文件现在以绝对路径的形式存放在$"变量中, require现在这样工作:
$" << File.expand_path(loaded_file)
Object#=~
匹配失败的时候返回nil而不是false
1 =~ 1 # => nil
Object#tap
把对象传给block, 返回这个对象,在链式调用的时候非常有用.
"F".tap{|x|x.upcase!}[0] # => "F"
"F".upcase![0] # error, 此时upcase!返回nil,你将会对nil调用[]方法
Kernel#define_singleton_method
a=""
a.define_singleton_method(:foo){|x|x+1}
a.foo(2) # => 3
Kernel#singleton_methods, Kernel#methods
返回一个由symbol组成数组而不是一个由字符串组成的数组
经我试验失败的features:
* send不能再调用private方法
* 没有新加入send!方法
1.9增加了一个新的顶级类,很纯洁
BasicObject.instance_methods # => [:==, :equal?, :"!", :"!=", "__send__]
Object.ancestors # => [Object, Kernel, BasicObject]
注意instance_methods返回的array中现在都是symbol对象,以前是string对象.
#instance_exec
为特定的instance执行block
BasicObject.instance_methods
# => ["__send__", "__id__", "==", "send", "send!", "respond_to?", "equal?", "object_id"]
Object.ancestors # => [Object, Kernel, BasicObject]
Kernel#require
通过require载入的文件现在以绝对路径的形式存放在$"变量中, require现在这样工作:
$" << File.expand_path(loaded_file)
Object#=~
匹配失败的时候返回nil而不是false
1 =~ 1 # => nil
Object#tap
把对象传给block, 返回这个对象,在链式调用的时候非常有用.
"F".tap{|x|x.upcase!}[0] # => "F"
"F".upcase![0] # error, 此时upcase!返回nil,你将会对nil调用[]方法
Kernel#define_singleton_method
a=""
a.define_singleton_method(:foo){|x|x+1}
a.foo(2) # => 3
Kernel#singleton_methods, Kernel#methods
返回一个由symbol组成数组而不是一个由字符串组成的数组
经我试验失败的features:
* send不能再调用private方法
* 没有新加入send!方法
曾经的这一天...
- » 2005年: 陈绮贞cheer精选集 躺在你的衣柜
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
