On 09/08/2014, rafaelmfranca / gmail.com <rafaelmfranca / gmail.com> wrote:
> Issue #10095 has been updated by Rafael Frana.
>
>
> I believe using `#itself` for this feature will cause confusion. By what I
> could understand of the original proposal its idea is to return the result
> of the block instead of the objects itself.
>
> The idea behind `#itself` is to return the object. If we add support to a
> block and make the method return the result of the block we are just going
> against the original idea of `#itself`.
>

I suppose examples will help illustrate what seems most clear. This is
a short snippet along the lines of what I think makes this proposed
method useful: a (long?) chain of methods that are prefixed/wrapped
towards the end:

  n = gets.chomp.as{|i| Integer(i)}
  n = gets.chomp.itself{|i| Integer(i)}

  n = gets.chomp.as do |i|
    Integer(i)
  end
  n = gets.chomp.itself do |i|
    Integer(i)
  end

In short short form #as seems appealing, but the long form it seems to
me to be too messy. #itself never seems ambiguous to me, but then I'm
already aware of #tap and can see that this is different.

My preference is still for #itself



Incidentally, I think #yield is a bad name because it does the exact
opposite thing depending on whether you pass it a block:

  def foo &b
    yield {|o| ... }
    yield ...
  end


-- 
  Matthew Kerwin
  http://matthew.kerwin.net.au/