c语⾔中的冒号运算符,问号和冒号(?:三元运算符)在
objective-c中的含义是什么?...
这⾏代码是什么意思?
label.frame = (inPudoEditMode) ? kLabelIndentedRect : kLabelRect;
江户⼗⼀〔0〕和江户⼀〔1〕把我弄糊涂了。
它是三元if-then-el运算符
请注意,这应该是问号,⽽不是引号。
哦,对不起,你说得对。
编译器似乎也允许variable ?: anotherVariable,这意味着什么?
没有第⼀元素的三元与(valOrVar != 0) ? valOrVar : anotherValorvar相同。
这是C三元运算符(Objective-C是C的超集):
label.frame = (inPudoEditMode) ? kLabelIndentedRect : kLabelRect;
在语义上等价于
if(inPudoEditMode) {
label.frame = kLabelIndentedRect;
} el {
label.frame = kLabelRect;
}
没有第⼀元素的三元(如variable ?: anotherVariable)表⽰与(valOrVar != 0) ? valOrVar : anotherValOrVar相同。
(更新:哎呀!三元运算符最重要的是它可以⽤于if-el不能使⽤的地⽅。ie:在条件或⽅法参数内。[nsstring stringwithformat:@"状态:%@",(statusbool?@"approved":@"rejected")]…这对于预处理器常量是⼀个很好的⽤途:define
statusstring(statusbool?@"approved":@"rejected")…然后:[nsstring stringwithformat:@"status:%@",statusstring]这样可以避免在if-el模式中使⽤和释放局部变量。FTW!
这就是为什么!
可能值得⼀提的是,在左侧是表达式的情况下,没有第⼀个元素(?:的三元运算符甚⾄更好,因为?:防⽌对它进⾏多次计算。例如:[myArray firstObject] ? [myArray firstObject] : @"Hello World";两次调⽤firstObject(如果firstObject不返回nil,其中[myArray firstObject] ?: @"Hello World";产⽣相同的结果,但从未多次调⽤firstObject。
最后~~我已经⽤这个接线员很久了(我最喜欢的迪福),但不知道它叫什么。这个⼤问题现在得到了解答。谢谢
还想补充⼀下,由于emoji与singer相似,没有第⼀个元素?:的三元运算符也被称为elvis运算符。当然,在这种情况下,当我们除去⼀个元素时,它不再是⼀个三元运算符,⽽是⼀个⼆元运算符。⼆进制运算符包括我们编程时通常使⽤的绝⼤多数运算符(*、+、-、^、|、||、&、>>等)。
它是三元或条件运算符。它的基本形式是:
condition ? valueIfTrue : valueIfFal
其中只有在选择值时才会对其进⾏评估。
这本应该被投得更多,简单明了。
只是澄清⼀下,这并不局限于价值观。condition ? codeIfTrue : codeIfFal
简单地说,逻辑是
(condition) ? {code for YES} : {code for NO}
简单⽽优雅
这实际上是最好的答案,因为其他答案意味着结果只能有⼀个"值",⽽这表明结果可以放置任意代码。
以巴⾥·沃克的精彩解释为基础…
三元运算符最重要的是它可以⽤于if-el不能使⽤的地⽅。ie:在条件或⽅法参数内。
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
…这对预处理器常量⾮常有⽤:
// in your
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your
[NSString stringWithFormat: @"Status: %@", statusString]
这样可以避免在if-el模式中使⽤和释放局部变量。FTW!
这只是通常的三元运算符。如果问号前的部分为真,则计算并返回冒号前的部分,否则计算并返回冒号后的部分。a?b:c
就像
if(a)
b;
el
c;
这只是写⼀个if-then-el语句的简短形式。其含义与以下代码相同:
if(inPudoEditMode)
label.frame = kLabelIndentedRect;
el
label.frame = kLabelRect;
这是C的⼀部分,所以它不是客观C特定的。以下是⼀份if声明的翻译:
if (inPudoEditMode)
label.frame = kLabelIndentedRec;
春季汤el
label.frame = kLabelRect;
有趣的事实,如果你想检查空/空例如:
-(NSString*) getSomeStringSafeCheck
无伴奏{
NSString *string = [lf getSomeString];
if(string != nil){
return String;
}
return @"";
佛山梁园}
快速的⽅法是:
-(NSString*) getSomeStringSafeCheck
{
return [lf getSomeString] != nil ? [lf getSomeString] : @"";
}
然后您可以⽤最简单的⽅法更新它:
-(NSString*) getSomeStringSafeCheck
{
return [lf getSomeString]?: @"";
}
因为在⽬标C中:
如果⼀个对象为零,它将作为布尔值返回fal;
三元运算符的第⼆个参数可以为空,因为它将返回"?"左侧的结果。
所以假设你写:
[lf getSomeString] != nil?: @"";
第⼆个参数返回布尔值,因此引发异常。
Ternary operator example.If the value of isFemale
boolean variable is YES, print"GENDER IS FEMALE" otherwi"GENDER IS
MALE"
means = execute the codes before the : if the condition is true.
: means = execute the codes after the : if the condition is fal.
Objtovi-C
BOOL isFemale = YES;
NSString *valueToPrint = (isFemale == YES) ? @"GENDER IS FEMALE" : @"GENDER IS MALE";
迪士尼海报
NSLog(valueToPrint); //Result will be"GENDER IS FEMALE" becau the value of isFemale was t to YES.为斯威夫特
let isFemale = fal
let valueToPrint:String = (isFemale == true) ?"GENDER IS FEMALE" :"GENDER IS MALE"
日出江花红胜火春来江水绿如蓝
print(valueToPrint) //Result will be "GENDER IS MALE" becau the isFemale value was t to fal.
正如⼤家所说,它是⼀种表⽰条件运算符的⽅法
如何钓鲮鱼if (condition){
true
}
el {
fal
}
使⽤三元运算符(condition)? true:fal。为了增加额外的信息,在Swift中,我们有了使⽤??表⽰它的新⽅法。
let imageObject: UIImage = (UIImage(named:"ImageName")) ?? (initialOfUrname.capitalizedString).imageFromString
它类似于
int a = 6, c= 5;
if (a > c)
{
a is greater
} el {
c is greater
}
等于
熬夜后如何恢复if (a>c)?a:c==>等于if (a>c)?:c。
我们可以⽤??来代替?:,它是快速的。
我刚刚学到了关于三元运算符的⼀些新知识。省略中间操作数的简短形式是⾮常优雅的,也是C保持相关的众多原因之⼀。仅供参考,我第⼀次真正了解这⼀点是在C中实现的⼀个例程的上下⽂中进⾏的,它也⽀持三元运算符。由于三元运算符是⽤C表⽰的,因此它可以⽤其他语⾔表⽰,这些语⾔本质上是其扩展(例如,objective-c、c)。
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;
⽅法
int padding;
if ([[UIScreen mainScreen] bounds].size.height <= 480)
padding = 15;
el
padding = 55;
它是三元运算符,类似于if/el语句。
if(a > b) {
what to do;
}
el {
what to do;
}
在三元运算符中,它是这样的:条件?条件为真时该怎么办:条件为假时该怎么办;
我的梦想英文
(a > b) ? what to do if true : what to do if fal;
我很感激你试图为这个⽹站做贡献,但是发布简单重复其他答案的答案通常是不⿎励的,因为它只会把问题搞得⼀团糟。