2014-04-08 1 views
2

REBOL 다차원 배열로 배열 인덱스에 액세스 할 수 있지만 pick 함수 번째 요소로서 배열받을 수 없습니다 방법I는 2 차원 배열의 인덱스를 지정하는 배열을 사용하여 시도

print pick [[3 5] [3 1]] [2 1] 

*** ERROR 
** Script error: invalid argument: [2 2] 
** Where: pick try do either either either -apply- 
** Near: pick [[3 5] [3 1]] [2 2] 

을 나는 이것에 대한 해결 방법을 찾았지만 약간 더 자세한입니다 :

print pick pick [[3 5] [3 1]] 2 1 
[comment This prints "3".] 

그것은 pick 함수를 여러 번 호출하지 않고 다차원 배열의 인덱스에 액세스 할 수 있습니까?

답변

2

다중 치수 배열의 요소에서 PICK으로가는 더 간결한 방법은 PATH! 구문을 사용하는 것입니다.

당신도 혼합 할 수
>> second first [[3 5] [3 1]] 
== 5 

과 일치 :

>> x: [ [[1]] [[2]] [3 [4 5]] ] 
== [[[1]] [[2]] [3 [4 5]]] 

>> first pick x/3 2 
== 4 

>> x: [[3 5] [3 1]]  
== [[3 5] [3 1]] 

>> x/2/1 
== 3 

>> x/2/2      
== 1 

>> x/1/(1 + 1)  ;; use parens for expressions - transforms to x/1/2 
== 5 

>> p: 2 
== 2 

>> x/1/:p   ;; use ":" for variable reference - transforms to x/1/2 
== 5 

>> x/(p - 1)/:p  ;; mix and match at any level of array - transforms to x/1/2 
== 5  

>> x/3    ;; NONE is returned if index does not exist 
== none 

>> x/2 
== [3 1] 

>> x/2/3   ;; again out of range 
== none 

또 다른 대안은 FIRST, SECOND ... TENTH 기능 것 : 여기

는 REBOL 콘솔의 예입니다
+0

PATH에 표현식을 포함시킬 수있는 방법이 있습니까? 'x/(10 + 1)/3'과 같은 구문? 또는'x/(3 + 4)/10'? 나는이 두 가지를 모두 시도해 보았고 항상 'none'을 반환합니다. –

+0

@AndersonGreen - 가능합니다. 몇 가지 예를 들어 답변을 업데이트하겠습니다. – draegtun

+0

@AndersonGreen - PS. 'x/(var1 + 1)'과'x/(3 + 4)'와 같이 공백을 기억하는 코멘트 예제가 작동합니다. 업데이트 - 내 의견을 바탕으로 귀하의 의견을 수정했습니다! 그 색인이 범위를 벗어 났기 때문에 새로운 예제가 'none'을 반환합니다. 이것을 예제에 추가하겠습니다. – draegtun