ObjC
[MyObject doThisWithString:string?: [MyObject otherString]];
Run Code Online (Sandbox Code Playgroud)
我怎么能在Swift中做到这一点?
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?
Run Code Online (Sandbox Code Playgroud)
有一个'??' 运算符称为"Nil coalescing"运算符.它确实完成了你需要的东西.引用文档:
零合并运算符
如果a包含值,则nil合并运算符(a ?? b)展开可选a;如果a为n,则返回默认值b.表达式a始终是可选类型.表达式b必须与存储在a中的类型匹配.
nil合并运算符是以下代码的简写:
a!=零?一个!:b
在您的情况下,您可以将表达式编写为:
MyInstance.doThisWithString(myStringVar ?? MyInstance.otherString())
Run Code Online (Sandbox Code Playgroud)