【问题标题】:How to append to darray with pipe in Hacklang如何在 Hacklang 中使用管道附加到 darray
【发布时间】:2020-10-30 22:32:50
【问题描述】:

我正在尝试将一个项目添加到一个数组中

    |> darray(JSON::decodeMap($$))

我想再追加一项

discover_arg => xxxxx 在这个数组中,我怎么能做到呢?

【问题讨论】:

  • 为什么要在管道中而不是两行?后者可能更容易阅读:$arr = whatever() |> darray(JSON::decodeMap($$)); $arr['discover_arg'] = 'xxxxx';
  • 同意乔希;我可能会避免在这里尝试 100% 的管道,因为它们会使下一个人更难阅读。 (或者你,一年后。)

标签: php pipe hacklang


【解决方案1】:

dicts 有一个 merge function,如果您能够使用这些来代替 darray。

但是为了一个潜在的大数组中的一个元素,我不会使用它——许多 HSL 函数通常会导致对恒定时间/空间事物的线性惩罚。它们是不可变的函数,PHP/Hack 的集合不是为快速部分克隆而实现的(就像链表和树一样)。

冒着弄乱管道纯度的风险,特别是如果你真的在生成它之后立即设置这个元素,你可能只是让你自己的 lambda set + return:

  |> darray(JSON::decodeMap($$))
  |> ((darray<string, string> $d) ==> { $d['discover_arg'] = 'xxxxx'; return $d; })($$)

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多