当前在线人数18445
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
静态语言怎么存 values of different type into Dictionaries
[版面:葵花宝典][首篇作者:repast] , 2018年11月06日01:05:01 ,474次阅读,12次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
repast
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: repast (xebec), 信区: Programming
标  题: 静态语言怎么存 values of different type into Dictionaries
发信站: BBS 未名空间站 (Tue Nov  6 01:05:01 2018, 美东)

有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
我用的是 C#, cast 来回显得很丑。有什么好办法么?

目前想法是整一个 interface 然后重新实现各种类型。
但立即的问题是 method arguments 比较难处理,实现里面仍然经常需要 cast。


--
※ 修改:·repast 於 Nov  6 01:10:05 2018 修改本文·[FROM: 76.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

 
wdong
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: wdong (万事休), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionari
发信站: BBS 未名空间站 (Tue Nov  6 01:09:29 2018, 美东)

没有通用的办法。针对你的应用看看怎么弄好。
我感觉本身dict里需要存不同类型的数据这个设计就有问题。

C++有个boost.any,不过我觉得危险,从来没用过。

【 在 repast (xebec) 的大作中提到: 】
: 有需要在 Dictionary 里面存不同类型的数据 as values,静态语言怎么存?
: 我用的是 C#, cast 来回显得很丑。有什么好办法么?整一个 interface 然后重新实
: 现各种类型?method arguments 比较难处理。



--

※ 修改:·wdong 于 Nov  6 01:09:52 2018 修改本文·[FROM: 108.]
※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 108.]

 
repast
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: repast (xebec), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionar
发信站: BBS 未名空间站 (Tue Nov  6 01:19:56 2018, 美东)


【 在 wdong (万事休) 的大作中提到: 】
: 没有通用的办法。针对你的应用看看怎么弄好。
: 我感觉本身dict里需要存不同类型的数据这个设计就有问题。

这种需求在现实世界里面是客观存在的。动态语言也能直接实现。

如果因为静态语言的要求强制分成多个 dict,商业逻辑 code
扩展性,简洁方面会有些问题。

: C++有个boost.any,不过我觉得危险,从来没用过。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

 
wdong
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: wdong (万事休), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionar
发信站: BBS 未名空间站 (Tue Nov  6 10:43:14 2018, 美东)

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

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



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
cpxx
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: cpxx (cpxx), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionar
发信站: BBS 未名空间站 (Tue Nov  6 12:33:49 2018, 美东)

可以用c#里用dynamic, 例子:

IDictionary<string, dynamic> map = new Dictionary<string, dynamic>
            {
                {"Key1", "String1"},
                {"Key2", 123},
                {"Key3", 456.7D},
                {"Key4", true},
                {"Key5", 90M},
                {"Key6", new List<string>()},
            };


            map["Key6"].Add("innerString");
            map["Key6"].Add("Apple");
            map["Key6"].Add("Orange");


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




--
※ 修改:·cpxx 於 Nov  6 12:49:46 2018 修改本文·[FROM: 50.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

 
littlebirds
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: littlebirds (dreamer), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionaries
发信站: BBS 未名空间站 (Tue Nov  6 14:09:43 2018, 美东)

or boost.variant, a bit more solid & efficent than boost.any but does not
look as clean.
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 144.]

 
xiaoju
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: xiaoju (可爱的龙猫), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionari
发信站: BBS 未名空间站 (Tue Nov  6 17:08:47 2018, 美东)

boost有个递归variant类型

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



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 27.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionar
发信站: BBS 未名空间站 (Tue Nov  6 18:41:35 2018, 美东)

是不是生产上会比较难用?not safe?
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: boost有个递归variant类型




--
※ 修改:·guvest 於 Nov  6 18:41:57 2018 修改本文·[FROM: 38.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2607:fb90:1cd4:]

 
saturnV
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: saturnV (土星五号), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionaries
发信站: BBS 未名空间站 (Tue Nov  6 19:53:56 2018, 美东)

boost的命令行lib用的就是实现你这个dict
https://github.com/boostorg/program_options/blob/develop/include/boost/
program_options/variables_map.hpp

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



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 108.]

 
mhwgoao
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: mhwgoao (mhwgoao), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionaries
发信站: BBS 未名空间站 (Wed Nov  7 00:21:18 2018, 美东)

any,variant已经在C++17标准里:
https://en.cppreference.com/w/cpp/utility/any
https://en.cppreference.com/w/cpp/utility/variant
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 69.]

 
xiaoju
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: xiaoju (可爱的龙猫), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionar
发信站: BBS 未名空间站 (Wed Nov  7 17:30:26 2018, 美东)

比较好用,可以把一般的json之类对象低成本放进去

但是原生的强类型getter不好使,最好自己重新包装一下

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 是不是生产上会比较难用?not safe?



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 27.]

 
xiaoju
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: xiaoju (可爱的龙猫), 信区: Programming
标  题: Re: 静态语言怎么存 values of different type into Dictionari
发信站: BBS 未名空间站 (Wed Nov  7 17:37:31 2018, 美东)

不能递归,还是代替不了字典没卵用
https://stackoverflow.com/questions/39454347/using-stdvariant-with-recursion
-without-using-boostrecursive-wrapper

C++标准委员会真是有病

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



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 27.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996