누산기를 사용할 때 누산기는 reduce
블록 내에 만 존재합니까? 아니면 함수 내에 있습니까?정의되지 않은 변수를 가져 오지 않고 Ruby에서 reduce/inject를 사용하는 방법
나는처럼 보이는 방법이 : 나는이 코드를 실행하면 나는 오류를 얻을
def my_useless_function(str)
crazy_letters = ['a','s','d','f','g','h']
str.split.reduce([]) do |new_array, letter|
for a in 0..crazy_letters.length-1
if letter == crazy_letters[a]
new_array << letter
end
end
end
return true if (new_array == new_array.sort)
end
을 나는 또한 내부 else
문 같은 다른 변수에 new_array
값을 할당하려고
"undefined variable new_array in line 11 (the return statement)"
내 reduce
블록하지만 그게 나에게 동일한 결과를 줬다.
왜 이런 일이 일어 났는지 설명 할 수 있습니까?
니스, 나는 더 효율적인 버전을 기록하고 있었다 그러나 그것은 당신과 매우 유사했을 것입니다. 배열이 정렬되어 있는지 확인하려면 정렬 할 필요가 없습니다 (예 :'each_cons'를 대신 사용할 수 있습니다) –
@Eric, 아마도 Ruby는'class Array; def sorted? : enum = self.to_enum; loop {return false if (enum.next <=> enum.peek) == 1}; 참된; 종료; 종료; [1,2,3]. 정렬? # => true; [1,3,2]. 정렬? # => false' (또는 제안한대로'each_cons'를 사용하십시오). –
@CarySwoveland :'Array # sorted? '는 기본 루프가있는 C 함수의 완벽한 후보가 될 것입니다. –