From: amirnaabuze@... Date: 2017-11-29T13:51:28+00:00 Subject: [ruby-dev:50330] [Ruby trunk Feature#14142] Add Method#=== Issue #14142 has been updated by MusinAR (Amir Musin). File Выделение_008.png added ![](Выделение_008.png) ---------------------------------------- Feature #14142: Add Method#=== https://bugs.ruby-lang.org/issues/14142#change-68048 * Author: osyo (manga osyo) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- ## 概要 Ruby の `Method` クラスに対する提案になります。 初めてこちらを利用するので内容や書き方などに対する問題があれば教えていただけると助かります。 ## 提案 `Method#call` と同等の `Method#===` を定義する。 ## 理由 `Proc` では `Proc#===` が `Proc#call` の同等のメソッドとして定義されています。 `Method` が `Proc` のように振る舞うことを期待するのであれば、`Proc#===` と同等の `Method#===` が定義されている方がよいのではないでしょうか。 ## ユースケース 以下のようにして `Proc` と同様に `when` で使用する事が出来るようになります。 ```ruby # 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) Выделение_008.png (21.5 KB) -- https://bugs.ruby-lang.org/