c语言中的冒号运算符,问号和冒号(?:三元运算符)在objective

您所在的位置:网站首页 什么是引号什么是冒号 c语言中的冒号运算符,问号和冒号(?:三元运算符)在objective

c语言中的冒号运算符,问号和冒号(?:三元运算符)在objective

2024-05-27 08:18| 来源: 网络整理| 查看: 265

这行代码是什么意思?

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

江户十一〔0〕和江户一〔1〕把我弄糊涂了。

它是三元if-then-else运算符

请注意,这应该是问号,而不是引号。

哦,对不起,你说得对。

编译器似乎也允许variable ?: anotherVariable,这意味着什么?

没有第一元素的三元与(valOrVar != 0) ? valOrVar : anotherValorvar相同。

这是C三元运算符(Objective-C是C的超集):

label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;

在语义上等价于

if(inPseudoEditMode) {

label.frame = kLabelIndentedRect;

} else {

label.frame = kLabelRect;

}

没有第一元素的三元(如variable ?: anotherVariable)表示与(valOrVar != 0) ? valOrVar : anotherValOrVar相同。

(更新:哎呀!三元运算符最重要的是它可以用于if-else不能使用的地方。ie:在条件或方法参数内。[nsstring stringwithformat:@"状态:%@",(statusbool?@"approved":@"rejected")]…这对于预处理器常量是一个很好的用途:define statusstring(statusbool?@"approved":@"rejected")…然后:[nsstring stringwithformat:@"status:%@",statusstring]这样可以避免在if-else模式中使用和释放局部变量。FTW!

这就是为什么!

可能值得一提的是,在左侧是表达式的情况下,没有第一个元素(?:的三元运算符甚至更好,因为?:防止对它进行多次计算。例如:[myArray firstObject] ? [myArray firstObject] : @"Hello World";两次调用firstObject(如果firstObject不返回nil,其中[myArray firstObject] ?: @"Hello World";产生相同的结果,但从未多次调用firstObject。

最后~~我已经用这个接线员很久了(我最喜欢的迪福),但不知道它叫什么。这个大问题现在得到了解答。谢谢

还想补充一下,由于emoji与singer相似,没有第一个元素?:的三元运算符也被称为elvis运算符。当然,在这种情况下,当我们除去一个元素时,它不再是一个三元运算符,而是一个二元运算符。二进制运算符包括我们编程时通常使用的绝大多数运算符(*、+、-、^、|、||、&、>>等)。

它是三元或条件运算符。它的基本形式是:

condition ? valueIfTrue : valueIfFalse

其中只有在选择值时才会对其进行评估。

这本应该被投得更多,简单明了。

只是澄清一下,这并不局限于价值观。condition ? codeIfTrue : codeIfFalse

简单地说,逻辑是

(condition) ? {code for YES} : {code for NO}

简单而优雅

这实际上是最好的答案,因为其他答案意味着结果只能有一个"值",而这表明结果可以放置任意代码。

以巴里·沃克的精彩解释为基础…

三元运算符最重要的是它可以用于if-else不能使用的地方。ie:在条件或方法参数内。

[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模式中使用和释放局部变量。FTW!

这只是通常的三元运算符。如果问号前的部分为真,则计算并返回冒号前的部分,否则计算并返回冒号后的部分。

a?b:c

就像

if(a)

b;

else

c;

这只是写一个if-then-else语句的简短形式。其含义与以下代码相同:

if(inPseudoEditMode)

label.frame = kLabelIndentedRect;

else

label.frame = kLabelRect;

这是C的一部分,所以它不是客观C特定的。以下是一份if声明的翻译:

if (inPseudoEditMode)

label.frame = kLabelIndentedRec;

else

label.frame = kLabelRect;

有趣的事实,如果你想检查空/空例如:

-(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]?: @"";

}

因为在目标C中:

如果一个对象为零,它将作为布尔值返回false;

三元运算符的第二个参数可以为空,因为它将返回"?"左侧的结果。

所以假设你写:

[self getSomeString] != nil?: @"";

第二个参数返回布尔值,因此引发异常。

Ternary operator example.If the value of isFemale

boolean variable is YES, print"GENDER IS FEMALE" otherwise"GENDER IS

MALE"

? means = execute the codes before the : if the condition is true.

: means = execute the codes after the : if the condition is false.

Objtovi-C

BOOL isFemale = YES;

NSString *valueToPrint = (isFemale == YES) ? @"GENDER IS FEMALE" : @"GENDER IS MALE";

NSLog(valueToPrint); //Result will be"GENDER IS FEMALE" because the value of isFemale was set to YES.

为斯威夫特

let isFemale = false

let valueToPrint:String = (isFemale == true) ?"GENDER IS FEMALE" :"GENDER IS MALE"

print(valueToPrint) //Result will be "GENDER IS MALE" because the isFemale value was set to false.

正如大家所说,它是一种表示条件运算符的方法

if (condition){

true

}

else {

false

}

使用三元运算符(condition)? true: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

}

等于

if (a>c)?a:c==>等于if (a>c)?:c。

我们可以用??来代替?:,它是快速的。

我刚刚学到了关于三元运算符的一些新知识。省略中间操作数的简短形式是非常优雅的,也是C保持相关的众多原因之一。仅供参考,我第一次真正了解这一点是在C中实现的一个例程的上下文中进行的,它也支持三元运算符。由于三元运算符是用C表示的,因此它可以用其他语言表示,这些语言本质上是其扩展(例如,objective-c、c)。

int padding = ([[UIScreen mainScreen] bounds].size.height

what to do;

}

在三元运算符中,它是这样的:条件?条件为真时该怎么办:条件为假时该怎么办;

(a > b) ? what to do if true : what to do if false;

我很感激你试图为这个网站做贡献,但是发布简单重复其他答案的答案通常是不鼓励的,因为它只会把问题搞得一团糟。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3