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
'programing' 카테고리의 다른 글
'GO' 근처의 구문이 잘못됨 (0) | 2023.07.12 |
---|---|
Mongodb + Atlas: '잘못된 인증 인증 실패.', 코드: 8000, (0) | 2023.07.07 |
Gdata package perl 문제 (0) | 2023.07.07 |
웹소켓, Angular 2 및 JSON 웹토큰 인증 (0) | 2023.07.07 |
gdb를 사용하여 주소를 회선으로 변환 (0) | 2023.07.07 |