Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift等价物“?:&引用;_Swift - Fatal编程技术网

Swift等价物“?:&引用;

Swift等价物“?:&引用;,swift,Swift,ObjC [MyObject doThisWithString:string?: [MyObject otherString]]; 我怎样才能在斯威夫特做到这一点 extension MyObject { func doThisWithString(string: String?) { ... <- assume defined } func otherString() -> String { return ... <

ObjC

[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]
。检查此文档。。。