我有一个boost :: hana ::类型集,想要用它创建一个地图,其值是bool's。
// I have a hana set:
auto my_set = hana::make_set(hana::type_c< int >, hana::type_c< float > ...);
// and want to transform it to a map with a given runtime value as values:
auto wanted_map = hana::make_map(
hana::make_pair(hana::type_c< int >, false),
hana::make_pair(hana::type_c< float >, false),
...
);
答案 0 :(得分:1)
hana::set
为hana::Foldable
,因此您可以使用hana::unpack
。考虑这个例子:
#include <boost/hana.hpp>
namespace hana = boost::hana;
int main() {
constexpr auto make_pair_with = hana::curry<2>(hana::flip(hana::make_pair));
auto result = hana::unpack(
hana::make_set(hana::type_c< int >, hana::type_c< float >),
hana::make_map ^hana::on^ make_pair_with(false)
);
auto expected = hana::make_map(
hana::make_pair(hana::type_c< int >, false),
hana::make_pair(hana::type_c< float >, false)
);
BOOST_HANA_RUNTIME_ASSERT(result == expected);
}
答案 1 :(得分:1)
杰森的回答是完美的,但是这里使用lambda是相同的(我通常发现它更具可读性):
createRecord(name) {
const headers = new Headers({ 'Content-Type': 'application/json' });
const options = new RequestOptions({ headers: this.headers });
const body = JSON.stringify(name);
return this._http.post
('https://api.someapiurl?apikey=someapikey',
body, options).map((res: Response) => res.json());
}