같은 기간 동안 라이스잉젝트 (0, :+) ',' 를 입력하면 절감하십시오 는 보다 일반적인 대중 작용하고 있는 MapReduce 프로그래밍 모델을.
, , , 절감하십시오 투입, 배 위에 압축 및 [접이식 총괄하였습니다] [2] 모두 클래스로 가치가 있다. 내가 찾을 수 있지만, 다양한 사회 전반에 걸쳐 가장 중요한 정합성의 코드를 기반으로 한 단어 선호하는 경향이 있기 때문에 다른 대안을 알고 있는 데 비해 조롱이라면 남겼다.
강조하기 위해 매핑해야 줄일 수 있습니다. 문장, 여기 있는 이 버전에 따라 조금 더 관대하시며 motor1.1end 백업하도록 어레이입니다.
%w(a b c).inject(:+)
#=> "abc"
%w(a b c).sum
#=> TypeError: String can't be coerced into Integer
또한
(1..1000000000).sum
#=> 500000000500000000 (execution time: less than 1s)
(1..1000000000).inject(:+)
#=> 500000000500000000 (execution time: upwards of a minute)
# http://madeofcode.com/posts/74-ruby-core-extension-array-sum
class Array
def sum(method = nil, &block)
if block_given?
raise ArgumentError, "You cannot pass a block and a method!" if method
inject(0) { |sum, i| sum + yield(i) }
elsif method
inject(0) { |sum, i| sum + i.send(method) }
else
inject(0) { |sum, i| sum + i }
end
end
end
또는 Ruby 1.9 방식을 사용해 보세요:
참고:
0
대소문자가 필요하며, 그렇지 않으면 빈 배열에서nil
이 반환됩니다:이렇게 해보세요:
루비의 열거 가능한 문서 참조
(참고:
nil
대신 빈 배열에0
이 반환되도록0
대소문자가 필요합니다).같은 기간 동안 라이스잉젝트 (0, :+) ',' 를 입력하면 절감하십시오 는 보다 일반적인 대중 작용하고 있는 MapReduce 프로그래밍 모델을.
강조하기 위해 매핑해야 줄일 수 있습니다. 문장, 여기 있는 이 버전에 따라 조금 더 관대하시며 motor1.1end 백업하도록 어레이입니다.
일부 추가 관련 판독값:
내가 메서드로부터 투입 .3/enumerable.html - http://ruby-doc.org/core-1.9
[2]: http://en.wikipedia.org/wiki/Reduce_% 28higher-order_function% 29
또는 (비교를 위해) Rails가 설치되어 있는 경우(실제로는 ActiveSupport만 설치되어 있음):
루비 > 위한 '합' 에서 사용할 수 있습니다. = 2.4.0 열거.
것은 위험하다고 모키파치 기본 클래스. 이전 버전의 사용하여 같은 경우 위험을 루비, '# 합' 을 '클래스' 어레이입니다 추가할 수 있다.
의 새로운 2.4.0 루비
합 '방법' 이라는 열거 적절하게 사용할 수 있습니다. 이 회사는 많은 비해 '투입 (:+)' 수축됐는데 몇 가지 중요한 정보를 읽을 수 끝에 잘 알려져 있다.
사례
범위
어레이에는
중요
이 방법을 사용할 수 없습니다 (:+) '와' # 했다. 예를 들어
또한
[이 오토메이티드] 참조 (https://stackoverflow.com/a/41449844/5021321) 이 같은 이유에 대한 자세한 정보는 '숨' 은 (는).
루비 2.4+ 라이.섬 '즉' - '/ 레일 [1, 2, 3] 이섬 # = >. 6 '
루비 (:+) '또는' - '사전 2.4 라이스잉젝트 라이트러더스 (:+)'
그냥 다이버시티는 생각해서라도 할 수도 있습니다 없는 경우 이 어레이입니다 배열입니다 배열입니다 객체에는 않는비즈니스 속성을 가질 수 있는 것이 아니라, 숫자 숫자 (예, 금액):
루비 1.8.7 방법은 다음과 같습니다.
간단히 사용할 수 있습니다.
6 127 {{{000}}}
이 정도면 콜린젝트 (& # 39, +& # 39;) '' [1.2,3]
루비 2.4.0 는 릴리즈됨 또한 [ui_policytable_java_spe_policy 열거 # 합] [1] 메서드입니다. 할 수 있도록
예) 의 문서:
[1]: # 내가 혹시 방법 .0/enumerable.html http://ruby-doc.org/core-2.4
우리가 할 수 있는 값을 모두 합쳐 모두 함께 어레이용 컴팩트형 그리곤요 투입 ex -
골피 느낄 경우, 할 수
이렇게 하면 123+321+12389" 문자열을 만드는 "; eval 함수를 사용하여 할 다음 합. 이는 골프 , 대해서만 목적을 제대로 된 코드를 사용하면 안 됩니다.
>. TypeError: # 39 로, t be 강압 can& 모두 정수
이를 극복할 수 있습니다,
루비 (s) 의 전체 표현식에서는 구체화하십시오.
우리가 할 수 있는 3 가지 방법 모두 어레이입니다
1)}, {합 + x 'x' 라이스잉젝트 합 (0)
'라이스잉젝트 (& # 39, +& # 39;)'
'아리스타인 (& # 39, +& # 39;)'
또는 이 방법을 시도해 볼 수 있습니다.
이것은 아주 짧은 시간 동안 것입니다. 발라봐
'라이스잉젝트 :+'