我想知道是否有办法实现以下要求:
首先,有一个methodA
,它接受一个输入objA
并检查objA
该方法是否有效。如果有效,则返回一个 object objB
。但是,如果objA
无效,它只会返回objA
自己。请注意,即使objA
是有效的,返回的objB
可能仍然与 相同objB
。
然后,在,中有一个methodB
and被调用。如果 的输入有效,则程序继续运行而不会出错。但是,如果使用无效输入调用,则应该终止(也就是返回某个指示错误的字符串)以防止将来崩溃。method
methodA
methodA
methodA
methodB
我能想到的当前解决方案是在其中创建(BOOL)methodAInputIsValid:(obj)input
一个methodB
:
if(methodAInputIsValid:input) {
obj objReturn = methodA:input;
}else{
//show error warning
return;
}
//continue doing something with objReturn and finally return some valid thing
代码的一个问题是,(BOOL)methodAInputIsValid:(obj)input
由于methodA:(obj)input
在methodA
. 所以我想更有效地使用有效性测试,以便它适用于methodB
并删除(BOOL)methodAInputIsValid
.
这是我能想到的一种可能的应用:
在程序中,用户被要求输入一个字符串,该字符串将指导程序的操作。但是,输入字符串可能需要标准化,例如将所有字母转换为小写,将所有单引号转换为双引号,并自动补全任何缺少的右括号或引号。但是,如果用户只是输入了无法标准化的废话,那么程序应该终止并警告用户该问题。这两种方法是(BOOL)isStandardizeable:(NSString *)input
和(NSString *)standardize:(NSString *)input
。因为(NSString *)standardize
已经返回一个NSString *
,我不能让它返回另一个BOOL
,对吧?所以下面的代码是无法实现的:
if(standardize:input){
NSString *result = standardize:input;
} else {
NSLog(@"unrecognizable input!");
return;
}
//continue...
谁能想到一种方法来做到这一点?