由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 静态语言怎么存 values of different type into Dictionaries
相关主题
请教 C++ 题问两个关于Emacs的c++补全问题
C#的Dictionary赋值操作必须先ContainsKey检查吗?给定一个dictionary,如何用26个字母拼出尽可能多的单词?
C++函数避免长参数列表请问pdf还是html更容易text processing?
Python小问题问一个python multiprocessing问题
Python矩阵一问python 的 timeit 问题
求算法:非交子集。琢磨好几天了,特向大家求教。TryGetValue (c#)
ask help for several interview questions (转载)问一道狗家Boggle变形难题 (转载)
firefox浏览器插件开发,要求实现过滤掉敏感词MVC Web: How to transfer a dictionary from viewer to cont
相关话题的讨论汇总
话题: key6话题: 静态话题: add话题: values
进入Programming版参与讨论
1 (共1页)
r****t
发帖数: 10904
1
有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
我用的是 C#, cast 来回显得很丑。有什么好办法么?
目前想法是整一个 interface 然后重新实现各种类型。
但立即的问题是 method arguments 比较难处理,实现里面仍然经常需要 cast。
w***g
发帖数: 5958
2
没有通用的办法。针对你的应用看看怎么弄好。
我感觉本身dict里需要存不同类型的数据这个设计就有问题。
C++有个boost.any,不过我觉得危险,从来没用过。

【在 r****t 的大作中提到】
: 有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
: 我用的是 C#, cast 来回显得很丑。有什么好办法么?
: 目前想法是整一个 interface 然后重新实现各种类型。
: 但立即的问题是 method arguments 比较难处理,实现里面仍然经常需要 cast。

r****t
发帖数: 10904
3

这种需求在现实世界里面是客观存在的。动态语言也能直接实现。
如果因为静态语言的要求强制分成多个 dict,商业逻辑 code
扩展性,简洁方面会有些问题。

【在 w***g 的大作中提到】
: 没有通用的办法。针对你的应用看看怎么弄好。
: 我感觉本身dict里需要存不同类型的数据这个设计就有问题。
: C++有个boost.any,不过我觉得危险,从来没用过。

w***g
发帖数: 5958
4
你非要我说,我会考虑embed一个python到C++里面: )
比如一旦上了boost.any,其实基本上就是python了。

【在 r****t 的大作中提到】
:
: 这种需求在现实世界里面是客观存在的。动态语言也能直接实现。
: 如果因为静态语言的要求强制分成多个 dict,商业逻辑 code
: 扩展性,简洁方面会有些问题。

c**x
发帖数: 492
5
可以用c#里用dynamic, 例子:
IDictionary map = new Dictionary
{
{"Key1", "String1"},
{"Key2", 123},
{"Key3", 456.7D},
{"Key4", true},
{"Key5", 90M},
{"Key6", new List()},
};
map["Key6"].Add("innerString");
map["Key6"].Add("Apple");
map["Key6"].Add("Orange");

【在 r****t 的大作中提到】
: 有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
: 我用的是 C#, cast 来回显得很丑。有什么好办法么?
: 目前想法是整一个 interface 然后重新实现各种类型。
: 但立即的问题是 method arguments 比较难处理,实现里面仍然经常需要 cast。

l*********s
发帖数: 5409
6
or boost.variant, a bit more solid & efficent than boost.any but does not
look as clean.
x****u
发帖数: 44466
7
boost有个递归variant类型

【在 w***g 的大作中提到】
: 没有通用的办法。针对你的应用看看怎么弄好。
: 我感觉本身dict里需要存不同类型的数据这个设计就有问题。
: C++有个boost.any,不过我觉得危险,从来没用过。

g****t
发帖数: 31659
8
是不是生产上会比较难用?not safe?

【在 x****u 的大作中提到】
: boost有个递归variant类型
s*****V
发帖数: 21731
9
boost的命令行lib用的就是实现你这个dict
https://github.com/boostorg/program_options/blob/develop/include/boost/
program_options/variables_map.hpp

【在 r****t 的大作中提到】
: 有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
: 我用的是 C#, cast 来回显得很丑。有什么好办法么?
: 目前想法是整一个 interface 然后重新实现各种类型。
: 但立即的问题是 method arguments 比较难处理,实现里面仍然经常需要 cast。

m*****o
发帖数: 110
x****u
发帖数: 44466
11
比较好用,可以把一般的json之类对象低成本放进去
但是原生的强类型getter不好使,最好自己重新包装一下

【在 g****t 的大作中提到】
: 是不是生产上会比较难用?not safe?
x****u
发帖数: 44466
12
不能递归,还是代替不了字典没卵用
https://stackoverflow.com/questions/39454347/using-stdvariant-with-recursion
-without-using-boostrecursive-wrapper
C++标准委员会真是有病

【在 m*****o 的大作中提到】
: any,variant已经在C++17标准里:
: https://en.cppreference.com/w/cpp/utility/any
: https://en.cppreference.com/w/cpp/utility/variant

1 (共1页)
进入Programming版参与讨论
相关主题
Java 的算法题:怎样把missing value替换成0 放在新生成的2D array里面?Python矩阵一问
search in dictionary is O(1)求算法:非交子集。琢磨好几天了,特向大家求教。
如何让python dictionary sorting 的速度变得很快?ask help for several interview questions (转载)
如何正确使用WebGridfirefox浏览器插件开发,要求实现过滤掉敏感词
请教 C++ 题问两个关于Emacs的c++补全问题
C#的Dictionary赋值操作必须先ContainsKey检查吗?给定一个dictionary,如何用26个字母拼出尽可能多的单词?
C++函数避免长参数列表请问pdf还是html更容易text processing?
Python小问题问一个python multiprocessing问题
相关话题的讨论汇总
话题: key6话题: 静态话题: add话题: values