2016-09-14 4 views
0

배열에 루비 주입 값을 저장하고 싶습니다. 하나의 좋은 예 (사이트 http://matthewcarriere.com/2008/06/23/using-select-reject-collect-inject-and-detect/)를 찾았지만 어레이 대신 반환하는 Fixnum을 발견했습니다.루비 주입으로 중간 값 저장

[1,2,3,4].inject([]) {|acc,n| acc << n+n} 

이것은 262144를 반환합니다. 그러나 나는 [2, 4, 6, 8]과 같은 배열을 원합니다. 도움을 주시면 감사하겠습니다.

답변

1

내 컴퓨터에서 작동합니다.

새로운 irb 세션에서 사용해 보셨습니까?

사용중인 루비 버전은 무엇입니까?

$ ruby --version 
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] 

$ irb --version 
irb 0.9.6(09/06/30) 

$ irb 
irb(main):001:0> [1,2,3,4].inject([]) {|acc,n| acc << n+n} 
=> [2, 4, 6, 8] 
irb(main):002:0> 
+0

광산이 windows 이외의 버전은 동일합니다. 기본적으로 나는이 배열을 원하지만 그에게주는 오류는 다음과 같다 : irb (main) : 001 : 0> (0..30) .inject ([1,0]) {| (i, j) | 난 << 난 + J} 오류 : 1 : 닐은 (IRB)로부터 Fixnum이라는 강요 할 수 없습니다 '+에서' (IRB) : 1 : 블록 '으로 irb_binding의'(IRB)로부터 을 : 1 :'각각 ' from (irb) : 1 :'inject'에 (irb) : 1 C : /Ruby23-x64/bin/irb.cmd : 19 : '

' – Manvi

+0

시도 중입니다. 배열에 정수를 더하는 것. i + j => array + Fixnum. 아마도이 작업을 수행하려고합니다. (0.30). 인제 ([1,0]) {| i, j | i << j + j} – user2526587

+0

오, 당신은 정확합니다. 나는 왜 나는 오류를 얻고있다. 이전 배열 수를 추가하고 싶습니다. 즉, fibonacci 시리즈를 30 번째 위치까지 가져오고 싶습니다. 안내해 주시면 정말로 감사하겠습니다. – Manvi