• 5961阅读
  • 3回复

关于else if调整成switch方式的求助 [复制链接]

上一主题 下一主题
离线ldqiang
 
只看楼主 倒序阅读 楼主  发表于: 2008-04-30
— 本帖被 XChinux 执行加亮操作(2008-04-30) —
大家好,我想对以下代码进行调整,不知能不能用switch进行重新设计,谢谢!
    //对页面按钮的恢度进行调整
    if(this->currentPage == 0)//第一页
    {
        this->ui.btnPre->setEnabled(false);
        this->ui.btnNext->setEnabled(true);
        this->ui.btnOk->setEnabled(false);
    }
    else if(this->currentPage == (this->pageCount - 1))//最后一页
    {
        this->ui.btnOk->setEnabled(true);
        this->ui.btnPre->setEnabled(true);
        this->ui.btnNext->setEnabled(false);
    }
    else if(this->currentPage > 0 && this->currentPage < this->pageCount -1)//位于中间页
    {
        this->ui.btnPre->setEnabled(true);
        this->ui.btnNext->setEnabled(true);
        this->ui.btnOk->setEnabled(false);
    }
我想把它改写成:
switch(this->currentPage)
{
      case  ?? :
}
这种结构,这样读起来感觉可读性更好!小弟在此再次谢过!
离线XChinux

只看该作者 1楼 发表于: 2008-04-30
还是用if else吧。逻辑比switch简单,易懂。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线captain08
只看该作者 2楼 发表于: 2008-04-30
case标号必须是整型常量表达式,不能放变量的
离线goldroc

只看该作者 3楼 发表于: 2008-05-03
enum IndexType {First,Mid,Last};
IndexType currIndexType(){
return (this->currentPage==0)?First:(this->currentPage==(this->pageCount - 1)?Last:Mid);
}

switch (currIndexType()){
case First:
//...do something here
break;
case Last:
//...do something here
break;
case Mid:
default:
//...do something here
break;
};
快速回复
限100 字节
 
上一个 下一个