![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ruby深入研究
wudixiaotie
这个作者很懒,什么都没留下…
展开
-
Ruby深入研究笔记1
module是可以定义private方法的 module MTest def aaa puts "aaa" private_method end private def private_method puts "this is private_method" end end class CC inclu...2014-10-29 09:38:46 · 80 阅读 · 0 评论 -
ruby深入研究10
what's different between MyClass.instance_eval() and MyClass.define_method() class AAA end AAA.instance_eval do def aaa puts 'aaaa' end end AAA.send :define_method, :aaa do ...2014-11-04 17:44:21 · 83 阅读 · 0 评论 -
ruby 深入研究9
环绕别名 class XXX def my_method puts "this is original_method" end alias_method :original_my_method, :my_method def my_method puts "rewrite original_method" end end x ...2014-10-30 16:34:01 · 78 阅读 · 0 评论 -
ruby深入研究8
类方法本身是Class类实例化对象的单件方法。那么实例方法呢?2014-10-30 09:34:00 · 90 阅读 · 0 评论 -
ruby深入研究7
lambda其实我的理解就是方法的对象,里面return是从lambda定义中返回。其实就是把方法当成一个对象传来传去,到需要的地方去执行。不过lambda和方法有个重大区别,lambda是闭包,方法不是。方法不会带着上下文作用域到处走。 Proc更像是块。return是从定义proc的作用域返回。 class AAA def my_method puts "this...原创 2014-10-30 09:09:51 · 85 阅读 · 0 评论 -
ruby深入研究6
m = Proc.new { puts "fuck" } m1 = proc { puts "fuck1" } def my_method yield end def my_method1(obj) obj.call end my_method(&m) #=> fuck my_method(&m1) #=> fuck1 ...原创 2014-10-30 09:09:33 · 83 阅读 · 0 评论 -
ruby深入研究5
instance_eval()方法的实际其实就一句话:不改变当前上下文的前提下,改变当前self。 class AAA def initialize @v = 1 end end a = AAA.new x = 3 puts self a.instance_eval do puts self @v += x puts @v end ...2014-10-29 15:49:19 · 70 阅读 · 0 评论 -
ruby深入研究4
block的环境理解: def my_method x = "aaa" yield("lala") end x = "ooo" my_method {|y| "#{x}, #{y} fdg" } 上面的代码得到的结果是 ooo,lala fdg 原因是运行block时候是带着当前环境的上下文的,也就是说当前环境的临时变量,类变量,全局变量,常量,都是跟着block走...2014-10-29 10:55:30 · 61 阅读 · 0 评论 -
ruby深入研究3
怎么绕过private方法的限制,直接调用private方法。 class AAA private def private_method puts 'this is private method' end end 三种方式 1.用send a = AAA.new a.send(:private_method) 2.用重写方式 class XXX &...2014-10-29 09:52:55 · 70 阅读 · 0 评论 -
ruby深入研究2
方法是存储在当前self的类中,Ruby中没有实例方法和类方法之分,只有方法。 类也是Class的一个对象。所以实例方法是存储在所属的类中,类方法是存储在Class的类中,那么对象的单间方法呢,是存储在当前对象的元类中。 include实际是在当前类之上建立一个父类,父类方法就是模块的方法。如果在include一个模块,这个模块建立的父类在原来模块之下。 origi...原创 2014-10-29 09:46:29 · 77 阅读 · 0 评论 -
ruby深入研究11
class_eval() 和 instance_eval() 的差别理解: MyClass.class_eval() 里面的代码是运行在MyClass的类定义作用域中,MyClass#instance_eval() 里面的代码是运行在MyClass类的实例方法所在的作用域中,所以 class AAA end AAA.instance_eval do def ...2014-11-05 09:29:42 · 89 阅读 · 0 评论