long if语句的替代方案 [英] Alternatives to long if statement
本文介绍了long if语句的替代方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我目前有一个很长的if语句,看起来很难看,我相当肯定是不合适的。它看起来像这样。
I currently have a long if statement, which looks ugly, and I'm fairly certain isn't proper. It looks something like this.
if self.folderactive.isChecked:
folders.createDir('Desktop')
elif not self.folderactive.isChecked:
folders.deleteDir('Desktop')
if self.folderactive_2.isChecked:
folders.createDir('Documents')
elif not self.folderactive_2.isChecked:
folders.deleteDir('Documents')
if self.folderactive_3.isChecked:
folders.createDir('Downloads')
elif not self.folderactive_3.isChecked:
folders.deleteDir('Downloads')
if self.folderactive_4.isChecked:
folders.createDir('Music')
elif not self.folderactive_4.isChecked:
folders.deleteDir('Music')
if self.folderactive_5.isChecked:
folders.createDir('Pictures')
elif not self.folderactive_5.isChecked:
folders.deleteDir('Pictures')
if self.folderactive_6.isChecked:
folders.createDir('Public')
elif not self.folderactive_6.isChecked:
folders.deleteDir('Public')
if self.folderactive_7.isChecked:
folders.createDir('Templates')
elif not self.folderactive_7.isChecked:
folders.deleteDir('Templates')
if self.folderactive_8.isChecked:
folders.createDir('Videos')
elif not self.folderactive_8.isChecked:
folders.deleteDir('Videos')
我如何简化这一长条件的条件?
How would I go about simplifying this long list of conditionals?
推荐答案
首先,所有 elif ...
子句可以写成 else:
。
First, all elif ...
clause can be written as else:
.
多个 if .. else ..
可以表示为循环:
checkbox_directory_pairs = [
(self.folderactive, 'Desktop'),
(self.folderactive_2, 'Documents'),
(self.folderactive_3, 'Downloads'),
...
]
for checkbox, directory in checkbox_directory_pairs:
if checkbox.isChecked:
folders.createDir(directory)
else:
folders.deleteDir(directory)
这篇关于long if语句的替代方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文