Project

General

Profile

Bug #10277

Ampersand to_proc issues

Added by jridgewell (Justin Ridgewell) over 5 years ago. Updated over 5 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
[ruby-core:65197]

Description

I'm noticing weird inconsistencies when when returning a bound method in the #to_proc method when using &instance_object. When returning the bound method from #to_proc, it'll raise an error ("wrong argument type AmpersandMethod (expected Proc) (TypeError)", AmpersandMethod being my class name). However, if I explicitly #to_proc the bound method, everything works as normal. I've attached a small ruby script showing the problem.


Files

ampersand-to_proc.rb (635 Bytes) ampersand-to_proc.rb jridgewell (Justin Ridgewell), 09/21/2014 10:26 PM

Updated by jacknagel (Jack Nagel) over 5 years ago

This seems correct to me. The & operator expects to_proc to return an actual Proc. AmpersandMethod#to_proc does not return a Proc, it returns a Method.

In other words,

puts yielder(&AmpersandMethod.new.method(:mapper))
puts a.map(&AmpersandMethod.new.method(:mapper))

here to_proc on the given object returns a Proc.

puts yielder(&AmpersandMethod.new)
puts a.map(&AmpersandMethod.new)

here to_proc on the given object returns a Method, not a Proc.

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

  • Status changed from Open to Rejected

to_proc must return a Proc, not a Method.
They are different.

Also available in: Atom PDF