최종 수정: 에
ARRAY_SPLIT
기능
주어진 boolean 플래그에 따라 입력 배열을 여러 하위 배열로 분할합니다.
- 분할 규칙(왼쪽에서 오른쪽):
arr=[a1,a2,...,an]와flags=[f1,f2,...,fn]에 대해,fi==true인 모든 위치에서ai와a(i-1)사이를 분할합니다.- 예를 들어,
arr=[3, 4, 5]와flags=[false, true, false]의 경우 두 번째 플래그가 true이므로 첫 번째 요소와 두 번째 요소 사이를 분할하여 두 하위 배열[3]과[4,5]를 생성합니다.
- 예를 들어,
구문
ARRAY_SPLIT(arr, flags)ARRAY_SPLIT(lambda, arr0, ...)ARRAY_SPLIT(lambda, arr0, ...)는ARRAY_SPLIT(arr0, ARRAY_MAP(lambda, arr0, ...))와 같습니다.
매개변수
arr:ARRAY<T>.flags:ARRAY<BOOLEAN>. 길이는 각 행에서arr의 길이와 일치해야 합니다.true는 현재 위치와 다음 요소 사이에서 분할함을 의미합니다.arr0, ...: 하나 이상의ARRAY<T>.lambda:lambda표현식으로,arr0, ...에 적용하여flags를 생성하고, 생성된 플래그를 분할에 사용합니다.
반환값
ARRAY<ARRAY<T>>를 반환합니다. 내부 배열의 요소는arr의 요소와 같습니다.arr와flags의 요소 수가 일치하지 않으면 오류가 발생합니다.
사용 시 참고 사항
flags의 특정 위치가NULL이면 분할하지 않는 것으로 처리합니다(false와 동일).ARRAY_SPLIT의 분할 규칙:fi==true인 각 위치에서ai와a(i-1)사이를 분할합니다.ARRAY_REVERSE_SPLIT의 분할 규칙:fi==true인 각 위치에서ai와a(i+1)사이를 분할합니다.
예제
-
기본 분할:
true인 각 위치에서 왼쪽에 인접한 요소와 분리합니다.ARRAY_SPLIT([1,2,3,4,5], [false,true,false,true,false])->[[1], [2, 3], [4, 5]]ARRAY_SPLIT(['a','b','c'], [false,false,false])->[['a','b','c']]
-
NULL이flags에 있는 경우:NULL은false와 동일하게 처리합니다(분할하지 않음).ARRAY_SPLIT([1,NULL,3], [false,null,false])->[[1, NULL, 3]]
-
lambda= x -> x-1을arr0=[1, 2, 3]에 적용하면flags=[0,1,2]가 생성되며, 이는flags=[false,true,true]와 같습니다ARRAY_SPLIT(x->x-1, [1, 2, 3])는ARRAY_SPLIT([1, 2, 3], [false,true,true])와 같습니다 ->[[1], [2], [3]]
-
lambda= (x,y) -> x-y를arr0=[1, 2, 3]과arr1=[0,1,2]에 적용하면flags=[true,true,true]가 생성됩니다ARRAY_SPLIT((x,y) -> x-y, [1, 2, 3], [0, 1, 2])는ARRAY_SPLIT([1, 2, 3], [true,true,true])와 같습니다 ->[[1], [2], [3]]