What does to_proc method mean?

后端 未结 4 582
孤独总比滥情好
孤独总比滥情好 2020-11-28 23:31

I am learning rails and following this thread. I am stuck with the to_proc method. I consider symbols only as alternatives to strings (they are like strings but

4条回答
  •  春和景丽
    2020-11-28 23:58

    The easiest way to explain this is with some examples.

    (1..3).collect(&:to_s)  #=> ["1", "2", "3"]
    

    Is the same as:

    (1..3).collect {|num| num.to_s}  #=> ["1", "2", "3"]
    

    and

    [1,2,3].collect(&:succ)  #=> [2, 3, 4]
    

    Is the same as:

    [1,2,3].collect {|num| num.succ}  #=> [2, 3, 4]
    

    to_proc returns a Proc object which responds to the given method by symbol. So in the third case, the array [1,2,3] calls its collect method and. succ is method defined by class Array. So this parameter is a short hand way of saying collect each element in the array and return its successor and from that create a new array which results in [2,3,4]. The symbol :succ is being converted to a Proc object so it call the Array's succ method.

提交回复
热议问题