问号在c语⾔中运算符,问号和冒号(?:三元运算符)在
objective-c中的含义是什么?...
问号和冒号(?:三元运算符)在objective-c中的含义是什么?
小刺猬背西瓜这⾏代码是什么意思?
label.frame = (inPudoEditMode) ? kLabelIndentedRect : kLabelRect;
和:让我感到困惑。
13个解决⽅案
402 votes
这是C三元运算符(Objective-C是C的超集):
label.frame = (inPudoEditMode) ? kLabelIndentedRect : kLabelRect;
在语义上等同于
if(inPudoEditMode) {
label.frame = kLabelIndentedRect;
} el {
label.frame = kLabelRect;
}
没有第⼀个元素的三元(例如variable ?: anotherVariable)与(valOrVar != 0) ? valOrVar : anotherValOrVar的含义相同
Barry Wark answered 2019-02-17T06:01:33Z
169 votes
它是三元或条件运算符。 它的基本形式是:
condition ? valueIfTrue : valueIfFal
只有在选择值时才会评估值。
Sean answered 2019-02-17T06:02:06Z
36 votes
以Barry Wark的优秀解释为基础......
三元运算符的重要之处在于它可以⽤在if-el不能的地⽅。 即:在条件或⽅法参数内。
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
...这对预处理器常量⾮常有⽤:
// in your
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your
[NSString stringWithFormat: @"Status: %@", statusString]
这使您不必在if-el模式中使⽤和释放局部变量。FTW!
Richard Bronosky answered 2019-02-17T06:02:53Z
35 votes
简单来说,逻辑就是
(condition) ? {code for YES} : {code for NO}
Varun Goyal answered 2019-02-17T06:03:25Z
13 votes
那只是通常的三元运营商。 如果问号前⾯的部分为true,则计算并返回冒号前的部分,否则计算并返回冒号后的部分。a?b:c
扬州一日游
就好像
if(a)
b;
el
c;
颜回一箪食一瓢饮故事
Brian answered 2019-02-17T06:03:59Z
4 votes
榆黄蘑这是C的⼀部分,因此它不是Objective-C特有的。 这是对if声明的翻译:
if (inPudoEditMode)
label.frame = kLabelIndentedRec;
el
label.frame = kLabelRect;
Dietrich Epp answered 2019-02-17T06:04:25Z
4 votes
这只是编写if-then-el语句的简短形式。 它表⽰与以下代码相同:
if(inPudoEditMode)
label.frame = kLabelIndentedRect;
el
label.frame = kLabelRect;
Claus Broch answered 2019-02-17T06:04:51Z
1 votes
它是三元运算符,就像if / el语句⼀样。
if(a > b) {
what to do;
}
el {
}
在三元运算符中它是这样的:条件? 如果条件为真,该怎么办:如果它是假的怎么办;
(a > b) ? what to do if true : what to do if fal;
cdhw answered 2019-02-17T06:05:25Z
1 votes
我刚学到了关于三元运算符的新内容。 省略中间操作数的简短形式是真正优雅的,并且是C仍然相关的众多原因之⼀。 仅供参考,我⾸先在C#中实现的例程中完全理解这⼀点,C#也⽀持三元运算符。 由于三元运算符在C中,因此可以理解它将在其他语⾔中基本上是其扩展(例如,Objective-C,C#)。
David A. Gray answered 2019-02-17T06:05:52Z
1 votes
正如⼤家所说,这是⼀种表⽰条件运算符的⽅法
if (condition){
true
}
el {
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
}
相当于
: ==> 等于
⽽不是?:我们可以使⽤??是迅捷的。
answered 2019-02-17T06:06:50Z
1 votes
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;
⼿段
if ([[UIScreen mainScreen] bounds].size.height <= 480)
padding = 15;
el
padding = 55;
Abo3atef answered 2019-02-17T06:07:12Z
1 votes
三元运算符的例⼦。如果是isFemale的值 布尔变量为YES,打印“GENDER IS FEMALE”,否则为“GENDER IS 男” means = execute the codes before the : if the condition is true.
: means = execute the codes after the : if the condition is fal.
Objective-C的
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.
对于斯威夫特
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. handiansom answered 2019-02-17T06:07:56Z
1 votes
有趣的事实,在objective-c中,如果你想检查null / nil例如:
-(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]?: @"";
}
因为在Objective-C中:
如果⼀个对象是nil,它将返回fal作为boolean;
读书无用三元运算符的第⼆个参数可以为空,因为它将返回“?”左侧的结果那么就说你写道:
[lf getSomeString] != nil?: @"";
第⼆个参数返回⼀个布尔值,因此抛出异常。
Jun Jie Gan answered 2019-02-17T06:09:12Z