From: "marcandre (Marc-Andre Lafortune)" Date: 2014-01-03T07:37:54+09:00 Subject: [ruby-core:59482] [ruby-trunk - Feature #9347][Open] Accept non callable argument to detect Issue #9347 has been reported by marcandre (Marc-Andre Lafortune). ---------------------------------------- Feature #9347: Accept non callable argument to detect https://bugs.ruby-lang.org/issues/9347 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: current: 2.2.0 Currently, the only argument that `Enumerable#detect` accepts is a callable object. Shouldn't we accept non callable objects too? [42].detect(:not_found){} # => NoMethodError: undefined method `call' for :not_found:Symbol # would return :not_found instead. I'd suggest that if the given argument does not `respond_to? :call`, then it would be returned as is instead of raising an error as currently. Wouldn't this be more flexible and possibly more performant? Inspired by http://stackoverflow.com/questions/20883414/why-does-enumerabledetect-need-a-proc-lambda -- http://bugs.ruby-lang.org/