ARRAY_REVERSE_SPLIT
ファンクション
与えられたboolean flagsに従って、入力配列を複数のサブ配列に分割します。
- 分割ルール(左から右へ):
arr=[a1,a2,...,an]とflags=[f1,f2,...,fn]に対して、fi==trueとなる各位置でaiとa(i+1)の間を分割します。- 例えば、
arr=[3, 4, 5]とflags=[false, true, false]の場合、2番目のflagがtrueなので、2番目と3番目の要素の間で分割し、結果として2つのサブ配列[3, 4]と[5]になります。
- 例えば、
Syntax
ARRAY_REVERSE_SPLIT(arr, flags)ARRAY_REVERSE_SPLIT(lamda, arr0, ...)ARRAY_REVERSE_SPLIT(lambda, arr0, ...)はARRAY_REVERSE_SPLIT(arr0, ARRAY_MAP(lambda, arr0, ...))と等価です
パラメータ
arr:ARRAY<T>。flags:ARRAY<BOOLEAN>。長さはarrと行ごとに一致する必要があります。trueは現在位置と次の要素の間で分割することを意味します。arr0, ...: 1つ以上のARRAY<T>。lambda:arr0, ...に適用されてflagsを生成するlambda式。生成されたflagsが分割に使用されます。
Return value
ARRAY<ARRAY<T>>を返します。内部配列の要素はarrの要素と同じです。arrとflagsの要素数が一致しない場合、エラーが発生します。
Usage notes
flags内の位置がNULLの場合、分割しない(falseと等価)として扱われます。ARRAY_REVERSE_SPLITの分割ルール:fi==trueとなる各位置で、aiとa(i+1)の間を分割します。ARRAY_SPLITの分割ルール:fi==trueとなる各位置で、aiとa(i-1)の間を分割します。
Examples
-
基本的な分割: 各
true位置で、右隣から分割します。ARRAY_REVERSE_SPLIT([1,2,3,4,5], [false,true,false,true,false])->[[1,2], [3,4], [5]]ARRAY_REVERSE_SPLIT(['a','b','c'], [false,false,false])->[['a','b','c']]
-
flagsにNULLがある場合:NULLはfalseと同様に扱われます(分割しない)。ARRAY_REVERSE_SPLIT([1,NULL,3], [false,null,false])->[[1,[NULL,3]]
-
lambda= x -> x-1をarr=[1, 2, 3]に適用するとflags=[0,1,2]が生成され、flags=[false,true,true]と等価ですARRAY_REVERSE_SPLIT(x->x-1, [1, 2, 3])はARRAY_REVERSE_SPLIT([1, 2, 3], [false,true,true])と等価 ->[[1, 2], [3]]
-
lambda= (x,y) -> x-yをarr=[1, 2, 3]とarr1=[0,1,2]に適用するとflags=[true,true,true]が生成されますARRAY_REVERSE_SPLIT((x,y) -> x-y, [1, 2, 3], [0, 1, 2])はARRAY_REVERSE_SPLIT([1, 2, 3], [true,true,true])と等価 ->[[1], [2], [3]]