【问题标题】:Hack iterate (map) over Map在 Map 上进行 Hack 迭代(map)
【发布时间】:2016-04-13 17:18:04
【问题描述】:

我有一个Map 如:

$m = Map {
  'sort' => 'created',
  'order' => 'desc',
}

我想把它变成一个字符串:

'sort:created order:desc'

我可以按照this SO answer 中的说明对数组执行此操作:

implode(' ', array_map(($k, $v) ==> $k.':'.$v, array_keys($m), $m))

我已经阅读了Map::items 的文档并尝试过:

$m->items()->map(($key, $value) ==> print($key))

但这什么也没打印。

我正在寻找一个像数组一样的单行器,没有循环。

【问题讨论】:

    标签: hhvm hacklang


    【解决方案1】:

    map()的参数是一个只接受一个参数的函数;如果你运行类型检查器,它会告诉你:

    test.php:9:20,20: Invalid argument (Typing[4039])
      /tmp/hh_server/hhi_1ebd4af3/hhi/interfaces.hhi:363:27,44: Number of  arguments doesn't match
      test.php:9:20,20: Because of this definition
    

    你想要的是mapWithKey()https://3v4l.org/GF69D:

    $m->mapWithKey(($key, $value) ==> print($key));
    

    您也可以使用与数组完全相同的代码:https://3v4l.org/mSREI

    【讨论】:

      【解决方案2】:

      用途:

      implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-23
        • 2020-10-18
        • 1970-01-01
        • 2013-12-18
        • 1970-01-01
        • 2017-10-08
        • 1970-01-01
        • 2016-10-08
        相关资源
        最近更新 更多