标签:ted convert time pac pts nat pass mes nta
folly/DynamicConverter.h
When dynamic objects contain data of a known type, it is sometimes useful to have its well-typed representation. A broad set of type-conversions are contained in DynamicConverter.h
, and facilitate the transformation of dynamic objects into their well-typed format.
Simply pass a dynamic into a templated convertTo:
dynamic d = { { 1, 2, 3 }, { 4, 5 } }; // a vector of vector of int auto vvi = convertTo<fbvector<fbvector<int>>>(d);
convertTo naturally supports conversions to
NOTE:
convertTo will assume that Type is a container if
Additionally, convertTo will assume that Type is a map if
If Type meets the container criteria, then it will be constructed by calling its InputIterator constructor.
If you want to use convertTo to convert dynamics into your own custom class, then all you have to do is provide a template specialization of DynamicConverter with the static method convert. Make sure you put it in namespace folly.
Example:
struct Token { int kind_; fbstring lexeme_; explicit Token(int kind, const fbstring& lexeme) : kind_(kind), lexeme_(lexeme) {} }; namespace folly { template <> struct DynamicConverter<Token> { static Token convert(const dynamic& d) { int k = convertTo<int>(d["KIND"]); fbstring lex = convertTo<fbstring>(d["LEXEME"]); return Token(k, lex); } }; }
标签:ted convert time pac pts nat pass mes nta
原文地址:https://www.cnblogs.com/lenmom/p/9359352.html