我有一个对象,如果成功则返回一个值,如果失败则返回 false(或 nil)。
我想将该值分配给一个变量
if(var1 = [object foo])
{
//if the [object foo] returned a variable, goes here
}
else
{
//[object foo] returned FALSE (or nil), go here
}
If 语句是否可以检测分配是否有效?
我有一个对象,如果成功则返回一个值,如果失败则返回 false(或 nil)。
我想将该值分配给一个变量
if(var1 = [object foo])
{
//if the [object foo] returned a variable, goes here
}
else
{
//[object foo] returned FALSE (or nil), go here
}
If 语句是否可以检测分配是否有效?
这没关系,但会产生警告,因为这是一个常见的错字(=
而不是==
)。要使该警告静音,请添加另一组括号,如下所示:
if ((var = [object foo])) ...
由于这很容易导致误解,因此很多人会建议不要这样做。对于一个简单if
的语句,首先进行分配要清楚得多:
var = [object for];
if (var) ...
在while
循环中,这更有用,但也被许多人认为是有害的。
不确定我是否理解您的问题,但让我尝试解释一些您可以检查的情况
1) 属性包含值
if ([object foo])
{
// If foo has a value associated to it that is not nil/false/zero
}
else
{
// If foo equals nil, false or zero
}
2) 变量赋值成功
if ((bar = [object myMethod]))
{
// If myMethod returns any non-nil value
}
else
{
// If myMethod returns nil
}
3) 之前的变量赋值成功
bar = [object myMethod];
if (bar)
{
// If bar has a value associated to it that is not nil/false/zero
}
else
{
// If bar equals nil, false or zero
}
在 if 语句中使用==
而不是。=
在 if 语句之前,您可能会var1 = [object foo]
看到比较运算符
如果您的意思是valid 变量包含预期结果,您可以针对预期结果对变量执行另一个if,或者null 来检查它。