Hack迭代(map)在Map上

时间:2016-04-13 17:18:04

标签: hhvm hacklang

我有一个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))

但这没有任何印刷品。

我正在寻找像阵列一样的oneliner,没有循环。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

使用:

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