新人ruby问题~~恳请大家帮忙看看

[code="java"]
class SimpleProc
def to_proc
proc {"Simple Proc"}
end

end

def method
yield
end

obj = SimpleProc.new
puts method(&obj)
[/code]

55555,为什么结果会是:Simple Proc

to_proc应该相当于java里的tostring方法把

  1. class SimpleProc
  2. def to_proc
  3. proc {"Simple Proc"}
  4. end
  5. end

  6. def method
  7. yield
  8. end

    1. obj = SimpleProc.new
    2. puts method(&obj)

兄弟,不然结果是什么?

看method方法的定义,你调用method(&obj),就会去调用obj.to_proc
yield这个东西,本身就是执行后边带的代码块。。你扔个对象进去,他
就试图转换成一个proc对象来执行。。
假如你的SimpleProc里边没有这个to_proc的话,这么用就会出错。。