2016-07-24 5 views
1

좋아, 그래서 난 그냥 루비이 자바를 수행 할 :왜이 루비 루프가 실패합니까?

int [] nums = { 2,4,6,8,10 }; 
for (int i = 0; i < nums.length; i++){ 
    nums[i]=nums[i]+100; 
} 

내가이 일을하고있다 :

qq.rb:5:in `block in <main>': undefined method `+' for nil:NilClass (NoMethodError) 
     from qq.rb:3:in `each' 
     from qq.rb:3:in `<main>' 

이유 :

nums = Array[2,4,6,8,10]; 
hello = nums.length; 
for i in 0..hello 
    # puts i 
    nums[i]=nums[i] + 100 
end 

코드는 실패?

미리 도움을 주셔서 감사합니다.

+0

은'i'가 잘못 무엇을 말 했어야 넣습니다. – meagar

+0

감사. 그건 .. 대신 .. –

답변

6

배열의 끝에서 반복됩니다.

..을 포함하여입니다. 0..30, 1, 2, 3이라는 숫자를 산출합니다.

...에는 범위의 마지막 값이 포함되지 않습니다. 0...30, 1, 2을 생성합니다. 당신 정말 원하는 것을 말했다

, 일부 관용적 루비 :

nums = [2,4,6,8,10] 
nums.map! { |x| x + 100 } # => [102, 104, 106, 108, 110] 
+0

고마워. 나는 이것이 간단한 질문이라는 것을 알았다. 그래, 나는 최종 가치를 간과했다. –

+0

관용구 루비는'(2.10) .step (2) .map & 100.method (: +)'입니다. – mudasobwa

+1

@mudasobwa Err, no. 코드를 더 길고, 더 복잡하고, * 멀리 * 읽기 어렵게 만들었습니다. 한 줄에 여러 Ruby 메서드를 넣을 수있게 만들었습니다. 그것은 관용구 코드를 작성하는 방법이 아닙니다. – meagar