[ruby-core:94775] [Ruby master Feature#16137] Add === to UnboundMethod
From:
nobu@...
Date:
2019-09-04 14:09:17 UTC
List:
ruby-core #94775
Issue #16137 has been updated by nobu (Nobuyoshi Nakada).
As `UnboundMethod#bind_call` raises a `TypeError` unless the argument class matches, it isn't for `when`.
And the example doesn't look more readable to me.
----------------------------------------
Feature #16137: Add === to UnboundMethod
https://bugs.ruby-lang.org/issues/16137#change-81393
* Author: okuramasafumi (Masafumi OKURA)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
# Abstract
`UnboundMethod` class should have `=== ` so that it can be used in case statement.
# Background
`Method` class has `===` method so that we can do something like:
``` ruby
require 'prime'
case 11
when Prime.method(:prime?) then :prime
end
```
However, we cannot do something like this:
```ruby
positive = Integer.instance_method(:positive?)
case 11
when positive then :positive
end
```
# Proposal
Add `===` method to `UnboundMethod` class.
# Implementation
Minimal implementation in Ruby could be:
```ruby
class UnboundMethod
def ===(other)
bind(other).call
end
end
```
# Summary
`===` for `UnboundMethod` can improve readability in case statement.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>