一个关于“庞大的case”的问题(100分)

  • 主题发起人 主题发起人 oldnew
  • 开始时间 开始时间
O

oldnew

Unregistered / Unconfirmed
GUEST, unregistred user!
比如有一个函数function test(s: string): string;
函数体内通过判断传入的参数s,而执行不同的操作
按照平常的思路,是应该用case语句进行分支。

但现在的问题是,传入的参数s会有很多,那么会导致这个case语句非常庞大,所以我觉得可能case用在这里就不太适合了,但也想不出来还有什么更好的办法。

各位有没有碰到过类似问题?能否有其它的方法代替这里的case?或者有没有其它的解决思路?谢谢大家
 
过程或函数[:D]
 
类似的方法你应该建立一张表,里面有一个字段来存放S,别一个字段用来标识S所属的种类,字段类型为整型,打个比方:参数S1,S3,S7要按同一个CASE处理,就是同一个种类号, 假设为3,程序里处理S1,S3,S7时就去表中查找并返回这个种类号3,程序里按CASE 3处理就可以了;字段S和其种类的表,可以程序外部维护,不需再修改代码了;
 
是不是可以把输入的数据进行分类,每一类再细分(或继续分类),这样可能会用几个子程序,我认为好多了
 
问题就是这个整型变量会有很多种啊,比如有50种情况
那么case中就有1~50个分支,这样会好吗???
case of
1:xxx;
2:yyy;
……
50:zzz;
end;

这样正常吗???
 
把那些不同的情況分為幾個子程序。
後用根據不同的名字(不同的字符串)來調不同的子程序
用RTTI。
 
to sunjialong:
分类是个好办法,不过我觉得解决得太不完美。
有没有其它更好的办法呢?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=261363
 
利用函数重载的方式也可屏保实现呀
 
晕倒!怎么会有这样的需要?????
你如果真的是这样调用程序,恐怕你真的得写case语句了!恐怕你敲字都会被弄得崩溃的!还有,如果以后修改调用函数和case结构,你也会晕倒的!

不过你可以写一个简单辅助生成case语句的小project嘛,只要你输入s的不同值(列到list里面),在同等位置定义调用的函数名字参数返回值什么的,点击一个按钮,就自动生成所有代码,并且可以把list里面的值都保留下来,以后修改再点击一遍生成按钮,就又自动写出所有代码,这样不是很简单吗?我有一些繁琐的程序代码都是做自己的工具去生成代码的!
 
case语句是不支持字符串常量的呀
 
多人接受答案了。
 
后退
顶部