Как рассчитать номер списка результатов в столбце? - PullRequest
0 голосов
/ 17 февраля 2020

Я использую инструмент SpreadsheetMapper, я хочу вычислить результаты, перечисленные числа в столбце.

Этот код не работает, когда я использую список результатов.

<#function TW nums...>
  <#local sum = 0>
  <#list nums as num>
    <#local sum += num>
  </#list>
  <#if nums?size != 0>
    <#return sum >
  </#if>
</#function>
${TW(result['TotalWeightListResult']!)}

https://prnt.sc/r3h137

Работает, когда я использую stati c указанные номера.

<#function TW nums...>
  <#local sum = 0>
  <#list nums as num>
    <#local sum += num>
  </#list>
  <#if nums?size != 0>
    <#return sum >
  </#if>
</#function>
${TW(10 20)}

ссылка - https://freemarker.apache.org/docs/ref_directive_function.html

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

1 Ответ

1 голос
/ 18 февраля 2020

Если вы объявите TW с параметром nums... и передадите список в TW, это будет просто первый элемент внутри nums. Это потому, что у параметров нет объявленного типа во FreeMarker, поэтому не совсем понятно, что вы имели в виду.

В вашем примере есть еще одно запутанное совпадение. Если вы отправляете somethingMissing! на TW, то первый элемент nums будет пустой строкой, которая является результатом операции expression!. Поскольку + перегружен для работы как в качестве дополнения, так и в качестве объединения строк, sum += num не даст сбоя, вместо этого он выполнит объединение строк. Сначала он преобразует sum в строку "0", а затем добавляет к ней пустую строку. Таким образом, вы получите возвращаемое значение "0", строку, которая при печати выглядит как число 0. Но на самом деле это не 0 число.

Итак, просто используйте <#function TW nums>, тогда оно будет работать как положено. Если вы хотите передать буквальный список, вы можете написать TW([10, 20]) тогда. Но я думаю, что обычно вы не хотите передавать предопределенный список на TW, и поэтому дополнительные [] не имеют большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...