这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
这行代码是什么意思?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
的吗?还有,迷惑我吧。
当前回答
正如大家所说,它是一种表示条件运算符的方法
if (condition){
true
}
else {
false
}
使用三元运算符(条件)?真:假 为了增加额外的信息,在swift中我们有新的方法来表示它使用??
let imageObject: UIImage = (UIImage(named: "ImageName")) ?? (initialOfUsername.capitalizedString).imageFromString
这和
int a = 6, c= 5;
if (a > c)
{
a is greater
} else {
c is greater
}
等于
如果(> c) ?a:c ==> = if (a>c)?c:
我们可以用??是迅速的。
其他回答
基于Barry Wark的精彩解释……
三元操作符的重要之处在于它可以用于if-else不能使用的地方。即:在条件或方法参数内。
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
...这是预处理常量的一个很好的用途:
// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]
这使您不必在if-else模式中使用和释放局部变量。增值!
我刚学了一些关于三元运算符的新东西。省略中间操作数的简短形式确实很优雅,这是C语言仍然重要的众多原因之一。仅供参考,我第一次真正了解这个是在c#实现的一个例程的上下文中,该例程也支持三元操作符。由于三元运算符是在C语言中,因此在其他本质上是它的扩展的语言中(例如,Objective-C, c#)也是如此。
有趣的是,在objective-c中,如果你想检查null / nil 例如:
-(NSString*) getSomeStringSafeCheck
{
NSString *string = [self getSomeString];
if(string != nil){
return String;
}
return @"";
}
最快捷的方法是:
-(NSString*) getSomeStringSafeCheck
{
return [self getSomeString] != nil ? [self getSomeString] : @"";
}
然后你可以用最简单的方式更新它:
-(NSString*) getSomeStringSafeCheck
{
return [self getSomeString]?: @"";
}
因为在Objective-C中
如果一个对象为nil,它将返回false作为布尔值; 三元运算符的第二个参数可以为空,因为它将返回'?'左边的结果。
假设你这样写:
[self getSomeString] != nil?: @"";
第二个参数返回布尔值,因此抛出异常。
简单地说,逻辑是
(条件)?{YES代码}:{NO代码}
这就是常见的三元运算符。如果问号之前的部分为真,则计算并返回冒号之前的部分,否则计算并返回冒号之后的部分。
a?b:c
就像
if(a)
b;
else
c;