内容简介:也曾考虑过在封装的代码中通过
+ (NSString *)getGoodsRuleWithCarLength:(NSString *)carLength andCarType:(NSString *)carType andSpecialRequire:(NSString *)specialRequire andEntrance:(TYTGoodsRuleEntrance)entrance{
NSString *goodsRule = nil;
if(carLength.length > 0){
if(carType.length > 0){
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@/%@",carLength,carType,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@/%@",carLength,carType];
}
}else{
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@",carLength,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@",carLength];
}
}
}else{
if(carType.length > 0){
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@/%@",carType,specialRequire];
}else{
goodsRule = [NSString stringWithFormat:@"%@",carType];
}
}else{
if(specialRequire.length > 0){
goodsRule = [NSString stringWithFormat:@"%@",specialRequire];
}else{
goodsRule = @"";
}
}
}
return goodsRule;
}
复制代码
二、可变参数的方式
//创建NSString的分类
/**
* 用斜线拼接参数
* count为参数个数,其它参数必须是NSString类型(可为nil)
* eg.需要拼接三个字符串 长、宽、高为 "长/宽/高" 方法调用方式为[NSString splicWithSlantParamsCount:3, @"长", @"宽", @"高"];
*/
+ (NSString *)stringSplicWithSlantParamsCount:(int)count,...{
if(count < 1){
return @"";
}
int index = 0;
va_list args;
va_start(args, count);
//拼接后的字符串
NSString *paramSum = @"";
NSString *otherParam;
//循环到结尾就停止循环
while(index<count){
index ++;
otherParam = va_arg(args, NSString *);
if(paramSum.length > 0){
if(otherParam.length > 0){
paramSum = [NSString stringWithFormat:@"%@/%@",paramSum,otherParam];
}
}else{
if(otherParam.length > 0){
paramSum = otherParam;
}
}
}
va_end(args);
return paramSum;
}
复制代码
+ (NSString *)getGoodsRuleWithCarLength:(NSString *)carLength andCarType:(NSString *)carType andSpecialRequire:(NSString *)specialRequire andEntrance:(TYTGoodsRuleEntrance)entrance{
//用"/"拼接字符串
NSString *goodsRule = [NSString stringSplicWithSlantParamsCount:3, carLength, carType, specialRequire];
return goodsRule;
}
复制代码
很明显,第二中方法扩展性更好,逼格更好
也曾考虑过在封装的代码中通过 vsnprintf
计算可变参数的长度,但是参数有可能为空,就会导致崩溃,所以最后决定直接传进来参数的个数
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从规范出发的程序设计
[美] Carroll Morgan / 裘宗燕 / 机械工业出版社 / 2002-8 / 45.00元
本书详细论述了有关规范程序设计的内容,包括:程序和精化、谓词演算、选择、迭代、构造类型、模块和封装等,最后几章还包含了大量的实例研究和一些更高级的程序设计技术。本书提倡一种严格的程序开发方法,分析问题要用严格方式写出程序的规范,而后通过一系列具有严格理论基础的推导,最终得到可以运行的程序。 本书是被世界上许多重要大学采用的教材,适于计算机及相关专业的本科生和研究生使用。一起来看看 《从规范出发的程序设计》 这本书的介绍吧!