programing

How to find a min/max with Ruby

padding 2023. 7. 7. 18:41
반응형

How to find a min/max with Ruby

사용하고 싶습니다.min(5,10)또는Math.max(4,7)루비에 이런 기능이 있나요?

.min

[5, 10].min

.max

[4, 7].max

Enumerable 모듈에서 제공되므로 다음을 포함하는 모든 항목Enumerable그런 방법을 사용할 수 있습니다.

v2.4는 자체 솔루션을 도입Array#min그리고.Array#max호출을 건너뛰기 때문에 Enumerable의 방법보다 훨씬 빠릅니다.#each.

.minmax

@httpsolasklick은 다른 옵션을 언급하지만, 이번에는 다음의 배열을 반환합니다.[min, max].

[4, 5, 7, 10].minmax
#=> [4, 10]

You can use

[5,10].min 

or

[4,7].max

It's a method for Arrays.

All those results generate garbage in a zealous attempt to handle more than two arguments. I'd be curious to see how they perform compared to good 'ol:

def max (a,b)
  a>b ? a : b
end

which is, by-the-way, my official answer to your question.

해시의 최대값/min을 찾아야 하는 경우 다음을 사용할 수 있습니다.#max_by또는#min_by

people = {'joe' => 21, 'bill' => 35, 'sally' => 24}

people.min_by { |name, age| age } #=> ["joe", 21]
people.max_by { |name, age| age } #=> ["bill", 35]

In addition to the provided answers, if you want to convert Enumerable#max into a max method that can call a variable number or arguments, like in some other programming languages, you could write:

def max(*values)
 values.max
end

Output:

max(7, 1234, 9, -78, 156)
=> 1234

이는 splat 연산자의 속성을 남용하여 제공된 모든 인수를 포함하는 배열 개체를 만들거나, 인수가 제공되지 않은 경우 빈 배열 개체를 만듭니다.후자의 경우 메소드가 반환됩니다.nil빈 배열 개체에서 Enumerable#max를 호출하면 반환됩니다.nil.

If you want to define this method on the Math module, this should do the trick:

module Math
 def self.max(*values)
  values.max
 end
end

Note that Enumerable.max is, at least, two times slower compared to the ternary operator (?:). See Dave Morse's answer for a simpler and faster method.

ReferenceURL : https://stackoverflow.com/questions/1359370/how-to-find-a-min-max-with-ruby

반응형