0

我正在将一个小型 Java 库翻译为目标 c。我在翻译以下内容时遇到了一些麻烦:

return other.tokens[0].equals(tokens[0]) &&
       other.tokens[1].equals(tokens[1]) &&
       other.tokens[2].equals(tokens[2]) &&
       other.tokens[3].equals(tokens[3]);

其中 other 是一个类的实例,而 tokens 是一个字符串数组,它是同一个类的一个实例变量。到目前为止,我所拥有的是:

return ([other [[tokens[0] equals:tokens[0]]]] && 
        [other [[tokens[1] equals:tokens[1]]]] && 
        [other [[tokens[2] equals:tokens[2]]]] && 
        [other [[tokens[3] equals:tokens[3]]]]);

但我不断收到“预期标识符”错误,我认为这意味着我的语法有问题。

4

3 回答 3

1

由于您在 Quad 类中有 getToken 方法实现,您可以将它与以下实现一起使用。

return ([[other getTokens:0] isEqualToString: [self getTokens[0]] &&
       [[other getTokens:1] isEqualToString: [self getTokens[1]] &&
       [[other getTokens:2] isEqualToString: [self getTokens[2]] &&
       [[other getTokens:3] isEqualToString: [self getTokens[3]]);
于 2013-06-30T18:47:11.107 回答
0

您可以轻松地将四个条件分成 4 行,如下所示:

BOOL b1=[other.tokens[0] isEqualTo:tokens[0]];
BOOL b2=[other.tokens[1] isEqualTo:tokens[1]];
BOOL b3=[other.tokens[2] isEqualTo:tokens[2]];
BOOL b4=[other.tokens[3] isEqualTo:tokens[3]];

return (b1 && b2 && b3 && b4);

此外,另一种方法是遍历所有值,如果有任何一个是Falsereturn NO

for(NSInteger i=0; i<4; i++){
    if(![other.tokens[i] isEqualTo:tokens[i]]){
         return NO;
    }
}
return YES;

并阅读此内容,因为我不确定您在比较哪种值(Object / NSString / Number 等)。实现 -hash / -isEqual: / -isEqualTo...: 用于 Objective-C 集合

于 2013-06-30T09:37:36.930 回答
0

在 Objective C 中没有这样的方法“等于”。如果你正在处理字符串比较,它应该是

[[token objectAtIndex: 0] isEqualToString:[token objectAtIndex: 0]] 

但为什么你要比较相同的字符串。

于 2013-06-30T09:39:29.723 回答