• #4 楼 @p_next 我也是近期才学习 ruby,假如说的不对请指正 理解了 ruby 中私有方法的定义,以及方法查找的顺序就可以回答这两个问题 简而言之,私有方法只能以函数形式 (不写 receiver) 被调用(记得=方法是一个特例),而所谓的函数形式并不是指没有 receiver,而是隐式的被 self 调用(即 self 为 receiver,但不能把它写出来) 回到代码上

    class Test
      readonly :x  # 函数形式调用(满足调用private method的条件),self为class Test本身
    
      def x=(value)
        @x = value
      end
    
    end
    

    然后来方法查找,在不考虑特异类的情况下 Test---class--->Class---superclass---->Module 于是定义于 class Module 中 private method 就这样被调用了

  • Object class 求教 at June 04, 2013

    #3 楼 @edgar_wang_cn 多谢回复,你说的很对,具体的实现方法应该就是#1 楼 @5long 所说的那样把

  • Object class 求教 at June 04, 2013

    看了一下,果真是这样…多谢了,自己还是记不牢啊…

  • 关于 inject 方法 at May 30, 2013

    搜索到了这样的介绍

    # Symbol#to_proc
    def to_proc
      proc{|obj, *args| obj.send(self, *arg)}
    end
    

    不知道是不是这样的...

    #2 楼 @alsotang 请问这是单单对 inject method 而言吗

  • 关于 inject 方法 at May 30, 2013

    #1 楼 @fsword 多谢你的回复,我大概知道了&的作用 但我还想请教一下 (1..100).inject(&:*)是不是就相当于(1..100).inject{|x, y| x.__send__(:*, y) }

  • #7 楼 @bhuztez 多谢

  • #3 楼 @bhuztez 你好,能问一下 header 里其实可以不同编码混合乱来是什么意思吗?