Project

General

Profile

Actions

Feature #5549

closed

Comparable#min, Comparable#max

Added by sawa (Tsuyoshi Sawada) over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-dev:44775]

Description

I request the following methods

Comparable#min(other)
Comparable#max(other)

which will work the same as

[self, other].min
[self, other].max

and can be defined as

module Comparable
def min other; [self, other].min end
def max other; [self, other].max end
end

Example use case: If you need to ensure that some calculated value becomes at least zero within a method chain.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #4574: Numeric#withinRejectedmatz (Yukihiro Matsumoto)04/13/2011Actions

Updated by matz (Yukihiro Matsumoto) over 12 years ago

  • Status changed from Open to Rejected

なぜ、それが必要だと思いましたか?
この提案だと a.min(b) というスタイルになり、Enumerableの「もっとも小さい(大きい)要素を返す」という意味でなく、「ふたつの要素のうちより小さい(大きい)ものを返す」と記述しています。そのような記述のための語彙としてはmin,maxではなく、比較演算子 >, < を使うのだと思いますし、そのメソッドはすでにComparableに定義されています。

Updated by nobu (Nobuyoshi Nakada) over 12 years ago

なかだです。

At Thu, 3 Nov 2011 19:52:44 +0900,
Yukihiro Matsumoto wrote in [ruby-dev:44793]:

この提案だと a.min(b) というスタイルになり、Enumerableの「もっ
とも小さい(大きい)要素を返す」という意味でなく、「ふたつの要素
のうちより小さい(大きい)ものを返す」と記述しています。そのよう
な記述のための語彙としてはmin,maxではなく、比較演算子 >, < を
使うのだと思いますし、そのメソッドはすでにComparableに定義され
ています。

これは

Example use case: If you need to ensure that some calculated
value becomes at least zero within a method chain.

ということで、メソッドチェーンに追加する形で使いたいということが
大きいのでしょう。

some_method.and_another.yet_another.min(0).max(100)

ただ、この例ではmin,maxという名前はあまりふさわしくないように思
います。サチュレーションとかクリッピングとか呼ばれることが多い気
がします。

some_method.clip_by(0..100)

とか。片方向のみの場合にうまくありませんが。

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦

Updated by mame (Yusuke Endoh) over 12 years ago

遠藤です。

2011年11月7日11:34 Nobuyoshi Nakada :

ただ、この例ではmin,maxという名前はあまりふさわしくないように思
います。サチュレーションとかクリッピングとか呼ばれることが多い気
がします。

some_method.clip_by(0..100)

#4574 でまさにそういう操作をする Numeric#within というメソッドを
提案しましたが、そこで聞いた話だと、こういう操作は一般的に clamp
と呼ばれるそうです。

--
Yusuke Endoh

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0