gpt4 book ai didi

objective-c - 使用大量 OR 运算符编写条件的更有效方法

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:38 25 4
gpt4 key购买 nike

我如何(更)有效地写出使用相同变量和大量 OR 运算符的 if/else 条件?

我一直在用脑袋敲 table ,试图想办法用相同的比较写出所有这些 OR 运算符。 For 循环行不通,而且我很确定 do/while 循环也行不通。 switch/case 可能会解决这个问题,但我不认为它可以压缩代码或使编写起来不那么乏味。

下面的例子说明了我的困境。 API 有一个协议(protocol)方法,它会为集合中的每个部分调用,并且需要返回该部分中项目数的值。本质上,下面的协议(protocol)方法是一个奇特的 for 循环。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
if (section == 0 || section == 31) return 7;
else if (section == 1 || section == 26 || section == 27 || section == 28 || section == 29 || section == 30) return 6;
else if (section == 2 || section == 3 || section == 4 || section == 5 || section == 6 || section == 7 || section == 8 || section == 9 || section == 10 || section == 11 || section == 12 || section == 13 || section == 14 || section == 15) return 2;
else if (section == 16 || section == 17 || section == 18 || section == 19 || section == 20 || section == 21 || section == 22 || section == 23 || section == 24 || section == 25) return 4;
else return 7;
}

正如您在我编写的极其繁琐的 if/else 条件语句中所见,它会检查每个部分。我觉得我错过了什么——Objective-C 提供了一种巧妙的方法来解决这种乏味且低效的条件编写/检查?

最佳答案

一种干净的方法是使用switch 语句。这些通常使用分支数组实现,因此效率很高。

switch (section)
{
case 0:
case 31:
return 7;
...
}

最有效的(无分支)是查找表:

const int nums[]= { 7, 6, 2, 2, 2... };

return nums[section];

关于objective-c - 使用大量 OR 运算符编写条件的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com