C语句备选方案
发布时间:2020-12-16 10:52:24 所属栏目:百科 来源:网络整理
导读:是我,还是C似乎要求更多地使用’if’语句然后C#? 我有这个代码库,它包含很多这样的东西: if (strcmp((char*)type,"double")==0) 当有太多if语句时,我想知道它是不是有点’代码味道’? 我不是说不好,但是字符串比较之类的东西,涉及到很多字符串,它们不能以
是我,还是C似乎要求更多地使用’if’语句然后C#?
我有这个代码库,它包含很多这样的东西: if (strcmp((char*)type,"double")==0) 当有太多if语句时,我想知道它是不是有点’代码味道’? 我不是说不好,但是字符串比较之类的东西,涉及到很多字符串,它们不能以不同的方式完成吗? 是否只能编写if语句的序列? 这只是一个例子,它可以是任何类型的IF声明 if (string a == "blah") then bla if (string b == "blah") then blo 解决方法
你这样做的原因(strcmp((char *)type,“double”)== 0)是因为你不能使“double”成为case-expression并使用switch语句.也就是说,如果你正在做很多这类字符串匹配,你可能想看看使用std :: map< std :: string,int>或者类似的东西,然后使用地图将字符串转换为索引,然后将其提供给切换.
就个人而言,在这些情况下,我喜欢std :: map< std :: string,int(Handler :: *)(void)>之类的东西,这让我可以创建类方法的处理程序映射,但是YMMV . 编辑:我忘了提到:有一个方法字符串映射的另一个好处是你可以在运行时改变(通常添加)它.例如,解析器在知道它正在解析哪种文件后,可以在运行时更改其关键字及其处理程序列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |