例如:
if(download.completed)
ibHeightOutlet.constant = imageView.frame.size.height;
else
ibHeightOutlet.constant = initialImageViewHeght.frame.size.height;
换句话说,在if条件之后立即放置try-block 是否合法?
答案 0 :(得分:77)
try
块的语法(在C ++中是statement)是
try compound-statement handler-sequence
if
的语法是:
attr(optional) if ( condition ) statement_true
attr(optional) if ( condition ) statement_true else statement_false
其中:
statement-true
- 任何声明(通常是复合声明),其中 如果条件评估为真,则执行statement-false
- 任何 语句(通常是复合语句),如果是条件则执行 评估为假
是的,您的代码是C++
中的合法代码。
statement_true
是try
块。
在合法性方面,它类似于:
if (condition) for(...) {
...
}
但是您的代码不易读取,并且在添加else
时可能成为某些C ++陷阱的牺牲品。因此,建议您在{...}
之后添加明确的if
。
答案 1 :(得分:40)
将if-block放在if条件之后是否合法?
这是合法的。你的代码与(和写作更好)相同:
if (true) {
try
{
// works as expected with both true and false, but is it legal?
}
catch (...)
{
// ...
}
}
因此,如果条件为false
,则不会执行try-catch
块。如果这是你所期望的,那很好。
答案 2 :(得分:22)
是。 if
的大括号是可选的。想象一下,{}
周围有try { .. } catch { .. }
。
您可能会感兴趣的是,当您撰写if
/ else if
/ else
时会发生这种情况; C ++实际上没有else if
...所以这个:
if (A) {
}
else if (B) {
}
实际上被解析为:
if (A) {
}
else
if (B) {
}
这是:
if (A) {
}
else {
if (B) {
}
}
答案 3 :(得分:9)
它的结构良好。根据{{3}}, try-block 是语句,而{em>语句按if (…)
进行var angularApp = angular.module('myModule', [
'angular-cache', 'ui.bootstrap', 'ngRoute', 'ScheduleModule'
]);
3}}