루비에서 환원과 같은 것을 주입합니까?


114

나는 그들이 여기에 함께 문서화되어있는 것을 보았다 . 그들은 같은 것입니까? Ruby에 왜 그렇게 많은 별칭이 있습니까 (예 : 배열에 대한 매핑 / 수집)? 감사합니다.

답변:


160

예, fold다른 많은 프로그래밍 언어와 수학 에서도 호출 됩니다. 루비는 다양한 배경을 가진 프로그래머에게 직관적이되도록 많은 별칭을 사용합니다. 사용할 경우 #lengthArray을 수행 할 수 있습니다. 을 사용하고 싶다면 #size그것도 괜찮습니다!


4
자신 만의 별칭을 만들고 싶다면 alias_method에 관심이있을 수 있습니다 .
Nick McCurdy 2013 년

23
#length와 #count는 Ruby에서 동일하지 않습니다. # 길이와 # 크기가 있습니다.
Quolonel 질문

9
3.length는 NoMethodError를 제공합니다. 3.size는 4를 반환합니다. 분명히 3은 배열이 아니지만 덕 타이핑에주의하십시오! (3_000_000_000_000_000.size는 8을 반환하고 3_000_000_000_000_000_000_000_000_000_000_000_000_000_000.size는 20을 반환합니다. 이는 차지하는 메모리 양인 것 같습니다.)
ChrisPhoenix

18
음, 현재 Ruby 문서 인 ruby-doc.org/core-2.2.3/Enumerable.html#method-i-reduceinject사용자가 둘을 읽을 필요가 없도록 똑같이 말하면 더 좋을 것 같습니다. 설명하고 그들이 동일한 지 알아 내려고 노력하십시오. 이것은 DRY 원칙과 일치하지 않습니까?
nonopolarity

3
@太極者無極而生, 좋은 점, 당신이 prediced 것처럼 나는이 혼란 한
neontapir

6

최신 버전의 문서는 Enumerable#reduce명시 적으로 지정합니다.

injectreduce방법은 별칭이다. 둘 다 성능 이점이 없습니다.


1
나는 분명히 의미론을 위해 사용 방법에 따라 분리하는 것을 좋아합니다. 그것의 PROC는 (있는 경우 &:+), 감소, 그것은 블록, 분사의 경우
TheRealMrCrowley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.