Ruby로 최소 / 최대를 어떻게 찾습니까?
min(5,10)
, 또는 처럼 간단하고 간단한 작업을하고 싶습니다 Math.max(4,7)
. Ruby에이 효과에 대한 기능이 있습니까?
넌 할 수있어
[5, 10].min
또는
[4, 7].max
그들은에서 온 Enumerable에서 모듈 이 포함되어 아무것도, 그래서 Enumerable
그 방법을 사용할 수있을 것이다.
v2.4에는 자체 및가 도입 Array#min
되어 있는데 Array#max
, 이는 호출을 건너 뛰기 때문에 Enumerable의 방법보다 훨씬 빠릅니다 #each
.
편집하다
@nicholasklick은 다른 옵션을 언급 Enumerable#minmax
하지만 이번에는의 배열을 반환합니다 [min, max]
.
[4, 5, 7, 10].minmax
=> [4, 10]
당신이 사용할 수있는
[5,10].min
또는
[4,7].max
배열을위한 방법입니다.
이러한 모든 결과는 세 개 이상의 인수를 처리하려는 열의로 가비지를 생성합니다. 나는 그들이 좋은 'ol과 비교하여 어떻게 수행되는지 궁금합니다.
def max (a,b)
a>b ? a : b
end
귀하의 질문에 대한 공식 답변입니다. :)
제공된 답변 외에도 Enumerable # max 를 다른 프로그래밍 언어와 같이 변수 번호 또는 인수를 호출 할 수있는 max 메서드로 변환 하려면 다음을 작성할 수 있습니다.
def max(*values)
values.max
end
산출:
max(7, 1234, 9, -78, 156)
=> 1234
이것은 splat 연산자의 속성을 남용하여 제공된 모든 인수를 포함하는 배열 객체를 만들거나 인수가 제공되지 않은 경우 빈 배열 객체를 만듭니다. 후자의 경우 빈 배열 객체에서 Enumerable # max 를 nil
호출 하면이 반환 되므로이 메서드는을 반환 합니다 nil
.
Math 모듈에서이 메소드를 정의하려면 다음을 수행해야합니다.
module Math
def self.max(*values)
values.max
end
end
Enumerable.max는 삼항 연산자 ( ?:
)에 비해 적어도 두 배 느립니다 . 더 간단하고 빠른 방법 은 Dave Morse의 답변 을 참조하십시오 .
해시의 최대 / 최소를 찾아야하는 경우 #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]
참고 URL : https://stackoverflow.com/questions/1359370/how-do-you-find-a-min-max-with-ruby
'development' 카테고리의 다른 글
C에 파일이 있는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2020.02.22 |
---|---|
활성 레코드 레코드를 복제하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.02.22 |
Synchronized Block 대신 Synchronized Method를 사용하는 것이 유리합니까? (0) | 2020.02.22 |
typescript 오류 TS2304 : 이름 'require'를 찾을 수 없습니다 (0) | 2020.02.22 |
이진 형식으로 인쇄 할 printf 변환기가 있습니까? (0) | 2020.02.22 |