内容简介:也曾考虑过在封装的代码中通过
+ (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
计算可变参数的长度,但是参数有可能为空,就会导致崩溃,所以最后决定直接传进来参数的个数
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- C 可变长参数 VS C++11 可变长模板
- 基于C++可变参数模板格式化字符串
- 当心Python函数可变默认参数(list,set,dict…)的陷阱
- 集合对象可变与不可变的那点事
- Python中不可变数据类型和可变数据类型
- 可变剪切分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java核心技术及面试指南
金华、胡书敏、周国华、吴倍敏 / 北京大学出版社 / 2018-9-1 / 59.00
本书根据大多数软件公司对高级开发的普遍标准,为在Java 方面零基础和开发经验在3 年以下的初级程序员提供了升级到高级工程师的路径,并以项目开发和面试为导向,精准地讲述升级必备的技能要点。具体来讲,本书围绕项目常用技术点,重新梳理了基本语法点、面向对象思想、集合对象、异常处理、数据库操作、JDBC、IO 操作、反射和多线程等知识点。 此外,本书还提到了对项目开发很有帮助的“设计模式”和“虚拟......一起来看看 《Java核心技术及面试指南》 这本书的介绍吧!