Project

General

Profile

Feature #14142

Add Method#===

Added by osyo (manga osyo) almost 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-dev:50329]

Description

概要

Ruby の Method クラスに対する提案になります。

初めてこちらを利用するので内容や書き方などに対する問題があれば教えていただけると助かります。

提案

Method#call と同等の Method#=== を定義する。

理由

Proc では Proc#===Proc#call の同等のメソッドとして定義されています。
MethodProc のように振る舞うことを期待するのであれば、Proc#=== と同等の Method#=== が定義されている方がよいのではないでしょうか。

ユースケース

以下のようにして Proc と同様に when で使用する事が出来るようになります。

# when で使用する
def check value
    case value
    when 0.method(:<)
        "plus"
    when 0.method(:>)
        "minus"
    when 0.method(:==)
        "zero"
    end
end

p check 3   # => "plus"
p check -6  # => "minus"
p check 0   # => "zero"

問題点

Method#===Object#=== を呼び出すことを期待しているようなコードであれば意図しない動作になる可能性があります。


Files

add_method_eqq.patch (1.06 KB) add_method_eqq.patch osyo (manga osyo), 11/29/2017 12:24 PM

Also available in: Atom PDF