由于我拥有大部分PHP经验,因此我看到了许多新的语法规则。我接受并理解了他们中的大多数,但有一个对我来说毫无意义。
currentNumber = 0;
self.Label.text = [NSString stringWithFormat:@"%2.0f", result];
if ([sender tag] == 0) result = 0; {
currentOperation = (int)[sender tag];
}
如您所见,result = 0;
之后有一个括号。起初我认为这只是一个捷径,就像[[something alloc]init]
一样,但当我重写这样的代码时:
currentNumber = 0;
self.Label.text = [NSString stringWithFormat:@"%2.0f", result];
if ([sender tag] == 0) result = 0;
else{
currentOperation = (int)[sender tag];
}
我的应用程序没有按预期运行,即使上面没有语法错误。
所以我的问题是,这种语法是什么意思?如果它甚至可以如何转换为PHP?
答案 0 :(得分:2)
这不是单个if
语句,它是一个if
,后跟一个用大括号括起来的语句序列。格式化的更好方法如下:
if ([sender tag] == 0)
result = 0;
// ---- if statement ends here ----
{
currentOperation = (int)[sender tag];
}
result = 0
是有条件完成的唯一部分;其余的,即
currentOperation = (int)[sender tag];
无条件完成。事实上,条件之后的块可以在没有花括号的情况下重写;这不会改变它的行为:
if ([sender tag] == 0)
result = 0;
currentOperation = (int)[sender tag];
为什么将
currentOperation = (int)[sender tag];
括在大括号内?
没有必要这样做。目的可能是将result = 0
和currentOperation = ...
括在同一个区块中,但是编写此代码的人犯了错字。
答案 1 :(得分:1)
if ([sender tag] == 0) result = 0; {
currentOperation = (int)[sender tag];
}
相当于:
if ([sender tag] == 0) { result = 0; } {
currentOperation = (int)[sender tag];
}
相当于:
if ([sender tag] == 0) {
result = 0;
}
currentOperation = (int)[sender tag];
换句话说,在您的代码中,只有result = 0;
是有条件的 - 其余的始终执行。