2017-12-10 3 views
-1

메소드 내부에서 동작하는 배열을 사용할 방법이 있습니까? 자바 스크립트에서 콜백에 배열의 복사본을 보낼 수있는 방법이 있습니까?루비 메서드 내에서 현재 배열에 접근하기

그래서 뭔가 같은 :

array.something.somethingelse.anotherthing do |element| 

    #i want to be able to use array.something.somethingelse here without 
    #having to call something and somethingelse on the original array again 

end 
+2

것은 그냥 추출 : 당신이 인수되는 덕분에 무료 변수가 다음이

do_another_thing(array.something.somethingelse) 

그리고 모든 정직에서

는 가장 좋은 방법은 같은 기능이 위임하는 것입니다 그것을 변수에 넣고 그 위에'anotherthing'을 호출하십시오. 또는 그 'anotherthing'이 블럭에 정말로 그것을 보낼 수 있는지 (만약 당신이 쓰는 방법이라면) –

+0

@SergioTulentsev이 예제에서 'anotherthing'은 내가 쓰는 메소드가 아니며, 접근 할 방법이 있는지 궁금하다. 메서드 블록 내부의 수정 된 배열, 자바 스크립트에서 수행 할 수있는 방법과 동일 – jjames

+0

아니요, 내장 배열 메서드의 경우에는 그런 방법이 없습니다. –

답변

3

그것은 매우 불규칙하지만 당신이 할 항상 수 있습니다

array.something.somethingelse.tap do |se| 
    se.anotherthing do |element| 
    end  
end 

는 일반적으로 당신이 중간 변수를 만들 것을 :

se = array.something.somethingelse 

se.anotherthing do |element| 
end 

tap 접근 방식에는 실제 이점이 없으므로 코드를 더 읽기 쉽게 만들지 않습니다.

def do_another_thing(se) 
    se.anotherthing do |element| 
    end 
end 
관련 문제