Project

General

Profile

Actions

Feature #14142

closed

Add Method#===

Added by osyo (manga osyo) over 6 years ago. Updated over 6 years ago.

Status:
Closed
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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0