filemaker разворачивает массив - PullRequest
1 голос
/ 11 марта 2011

Итак, допустим, мой расчет такой:

Let (
    [
        $result[1] ="1";
        $result[2] ="!";
        $result[3] = "3";
        $result[4] = "4";
        $result[5] = "5";
        $result[6] = "6";
        $result[7] = "7";
        $result[8] = "8";
        $result[9] = "-";
        $result[10] = "10";
        $result[11] = "11";
        $result[12] = "12";
        $result[13] = "13";
        $result[14] = "14";
        $result[15] = "15";
        $result[16] = "!";
    ];  
    $result[1] & 
    $result[2] & 
    $result[3] & 
    $result[4] & 
    $result[5] & 
    $result[6] & 
    $result[7] & 
    $result[8] & 
    $result[9] & 
    $result[10] & 
    $result[11] & 
    $result[12] & 
    $result[13] & 
    $result[14] & 
    $result[15] &
    $result[16]
)

Это довольно просто, я создаю и массив, а затем я хочу, чтобы он возвращал массив, поскольку есть строка и более простой способ объединитьзначения массива результатов?

** Примеры пользовательских функций *** пытаясь использовать код @chuck, не зная, что я делаю неправильно, я мог бы выяснить, как загрузить файл, так что вот некоторые ошибки

enter image description here enter image description here enter image description here

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

Вот две пользовательские функции, которые должны работать, если вы можете предположить, что как только вы доберетесь до пустого значения в массиве, вы достигнете конца массива.Я написал это очень быстро и протестировал только один раз, но, возможно, он сработает за вас.

ConcatArray( VarName ) = _ConcatArray( VarName; 1 )

Это просто вызывает рекурсивную функцию с начальным значением.

_ConcatArray( VarName; Iteration ) = Let(
  [
    Var = Evaluate( "$" & VarName & "[" & Iteration & "]" )
  ];

  Case(
    IsEmpty( Var );
    "";
    Var & _ConcatArray( VarName; Iteration + 1 )
  )
)

Затем я открыл Средство просмотра данных в FileMaker и проверил его с помощью этого вычисления.

Let (
    [
        $result[1] ="1";
        $result[2] ="!";
        $result[3] = "3";
        $result[4] = "4";
        $result[5] = "5";
        $result[6] = "6";
        $result[7] = "7";
        $result[8] = "8";
        $result[9] = "-";
        $result[10] = "10";
        $result[11] = "11";
        $result[12] = "12";
        $result[13] = "13";
        $result[14] = "14";
        $result[15] = "15";
        $result[16] = "!"
    ];  
    ConcatArray( "result" )
)

Результат был 1!345678-101112131415!.

1 голос
/ 11 марта 2011

Вы можете сделать это с помощью рекурсивной пользовательской функции.Укажите конечный диапазон и имя переменной в качестве параметров, и затем он может повторно вызывать себя с увеличивающимся индексным номером, пока этот индексный номер не станет равным конечному диапазону.

...