に最終更新
ARRAY_SPLIT
機能
指定した真偽値フラグに従って、入力配列を複数の部分配列に分割します。
- 分割規則 (左から右):
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]]