Swift等价物“?:&引用;
ObjCSwift等价物“?:&引用;,swift,Swift,ObjC [MyObject doThisWithString:string?: [MyObject otherString]]; 我怎样才能在斯威夫特做到这一点 extension MyObject { func doThisWithString(string: String?) { ... <- assume defined } func otherString() -> String { return ... <
[MyObject doThisWithString:string?: [MyObject otherString]];
我怎样才能在斯威夫特做到这一点
extension MyObject {
func doThisWithString(string: String?) {
... <- assume defined
}
func otherString() -> String {
return ... <- assume defined
}
}
var MyInstance: MyObject
...
MyInstance.doThisWithString(myStringVar?: MyInstance.otherString()) <- how do I do this?
扩展MyObject{
func doThisWithString(string:string?){
…字符串{
return…有一个名为“Nil coalescing”运算符的“??”运算符。它执行的操作与您需要的完全相同。引用:
零凝聚算子
零合并运算符(a??b)将打开一个可选的a,如果它
包含一个值,如果a为nil,则返回默认值b
表达式a始终是可选类型。表达式b必须
匹配存储在a中的类型
nil凝聚运算符是以下代码的简写:
a!=零?a!:b
在您的情况下,您可以将表达式写成:
MyInstance.doThisWithString(myStringVar ?? MyInstance.otherString())
有一个名为“Nil coalescing”的“?”操作符。它执行您需要的操作。引用:
零凝聚算子
零合并运算符(a??b)将打开一个可选的a,如果它
包含一个值,如果a为nil,则返回默认值b
表达式a始终是可选类型。表达式b必须
匹配存储在a中的类型
nil凝聚运算符是以下代码的简写:
a!=零?a!:b
在您的情况下,您可以将表达式写成:
MyInstance.doThisWithString(myStringVar ?? MyInstance.otherString())
Swift提供了一个非常简单的解决方案。Nil凝聚运算符或?
Nil合并操作符基本上尝试为可选对象提供一些默认值,这样就不必强制展开可选对象
例如:var someValue=someOptional??默认值(默认值取决于可选类型。)
对于实例,您可以简单地用类的默认实例替换默认的_值
例如:对于CellForRowatineXpath,它要求您强制展开已创建的单元格,但您可以在那里使用Nil合并运算符,也可以使用返回someCell??TableViewCellClass()Swift提供了一个非常简单的解决方案。Nil合并运算符或?
Nil合并操作符基本上尝试为可选对象提供一些默认值,这样就不必强制展开可选对象
例如:var someValue=someOptional??默认值(默认值取决于可选类型。)
对于实例,您可以简单地用类的默认实例替换默认的_值
例如:对于cellForRowAtIndexPath,它要求您强制展开已创建的单元格,但您可以在那里使用Nil合并运算符,也可以使用返回someCell??TableViewCellClass()该?:
运算符是三元数的简写语法。完整语法为字符串?字符串:[MyObject otherString]
。检查此文档。?:
运算符是三元数的速记语法。完整语法将是字符串?字符串:[MyObject otherString]
。检查此文档。。。