【发布时间】:2013-01-30 18:00:24
【问题描述】:
什么是高效编码的最佳方法,因为这将被递归调用,并且创建大量对象是不好的。 +*-/, sin,cos,sqrt,pi and x,y,a,b 应该放在三个单独的 if statements 中,不像现在所有东西都是分开的。同样为了可读性,制作包含 4 isEqualToString 的 if 语句也不是很好。
NSString *operation = topOfStack;
if ([operation isEqualToString:@"+"]) {
} else if ([@"*" isEqualToString:operation]) {
} else if ([operation isEqualToString:@"-"]) {
} else if ([operation isEqualToString:@"/"]) {
} else if ([operation isEqualToString:@"sin"]) {
} else if ([operation isEqualToString:@"cos"]) {
} else if ([operation isEqualToString:@"sqrt"]) {
} else if ([operation isEqualToString:@"pi"]) {
} else if ([operation isEqualToString:@"x"]) {
} else if ([operation isEqualToString:@"y"]) {
} else if ([operation isEqualToString:@"a"]) {
} else if ([operation isEqualToString:@"b"]) {
}
【问题讨论】:
-
老实说,在 Objective-c 中没有很好的方法来做到这一点。理想的方法是使用 switch 语句,但不幸的是,objc 中的 switch 语句不支持对象。
-
Re:“创建大量对象不好”——这段代码都没有创建任何对象。
-
说到 NSStrings 上的 switch 语句,你为什么不看看我为在对象上做 switch 做的这个头库:stackoverflow.com/questions/4224495/…
标签: objective-c if-statement nsstring