gpt4 book ai didi

twig - 如何将标量 Twig 过滤器映射到数组

转载 作者:行者123 更新时间:2023-12-04 13:26:10 28 4
gpt4 key购买 nike

我有一个简单的浮点数组。我需要将它显示为逗号分隔的字符串。

{{ arr|join(', ') }}

由于过度的微不足道的准确性,这是一个糟糕的解决方案。
{% for val in arr %}
{{val|number_format(2)}},
{% endfor %}

不好,因为末尾有多余的逗号。

我想做这样的事情:
{{ arr|map(number_format(3))|join(', ') }}

但我还没有找到过滤器 map或类似的过滤器它 Twig。
Аnd 我不知道如何实现这样的过滤器。

最佳答案

快速回答 (TL;DR)

  • 这个问题与高阶函数有关
  • Map是一个高阶函数
  • (参见例如)https://en.wikipedia.org/wiki/Map_(higher-order_function)
  • (参见例如)https://en.wikipedia.org/wiki/Higher-order_function

  • 详细解答

    语境
  • Twig 2.x(截至 2017-02-08 的最新版本)

  • 问题
  • 场景: DeveloperGarricSugas 希望将高阶函数应用于 Twig 变量
  • 高阶函数允许对任何 Twig 变量进行各种变换
  • Twig 对高阶函数的支持有限
  • 然而,存在用于此的附加库
  • (参见例如)https://github.com/dpolac/twig-lambda
  • 自定义过滤器或函数也可用于模拟此

  • 示例01
  • DeveloperGarricSugas 从一个按顺序索引的数组开始
  • 转换自 BEFORE进入 AFTER (大写首字母)

  • {%- set mylist = ['alpha','bravo','charlie','delta','echo'] -%}

    前:
    ['alpha','bravo','charlie','delta','echo']

    后:
    ['Alpha','Bravo','Charlie','Delta','Echo']

    解决方案

    {%- set mylist = mylist|map(=> _|capitalize) -%}

    陷阱
  • Twig 高阶函数有限支持来自插件库
  • 上述解决方案不适用于原生 Twig

  • 也可以看看
  • https://twigfiddle.com/rsl89m
  • https://github.com/dpolac/twig-lambda
  • 关于twig - 如何将标量 Twig 过滤器映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223924/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com