Hack 在 Map 上迭代(地图)
Hack iterate (map) over Map
我有一个 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))
但这什么也不打印。
我正在寻找像阵列一样的单线,没有循环。
使用:
implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))
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
我有一个 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))
但这什么也不打印。
我正在寻找像阵列一样的单线,没有循环。
使用:
implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))
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