我想弄清楚如何在Swift中正确使用??
。
我已经看到它在某些课程中使用但我不确定为什么使用它以及什么时候适合使用。
有人有一个很好的例子可以解释这个吗?
答案 0 :(得分:3)
??
是nil coalescing operator。如果值存在,则会解除Optional
,如果Optional
为nil
,则会使用默认值。例如:
let s1: String? = "my string"
let s2: String? = nil
let s3 = s1 ?? "no value" // s3 = "my string"
let s4 = s2 ?? "no value" // s4 = "no value"
答案 1 :(得分:2)
lines(1)
是“nil-coalescing”运算符。
Optionals - 包含可能包含或可能不包含值的类型 - 是Swift代码的基础。
例如,@if (Model is System.Web.Mvc.HandleErrorInfo)
{
<title>Error</title>
}
else if (Model.GetType() == typeof(MyApp.Models.BaseViewModel))
{
<meta name="description" content="@Model.PageMetaDescription">
<title>@Model.PageTitleComplete</title>
}
方法??
会返回一个可选的String
,即toInt()
。如果字符串不是有效数字,则返回Int
。如果是,则可选将“包装”实际数字:
Int?
nil
运算符是一种用默认值替换"1".toInt() // returns {Some 1}
"foo".toInt() // returns nil
的方法,如果它不是??
,则解包它。所以:
nil
不完美的类比是nil
等同于// if s isn’t a valid integer, default to 0
let i = "1".toInt() ?? 0 // i will be 1 (not {Some 1})
let j = "foo".toInt() ?? 0 // j will be 0
。
但是它有一些不同的方式 - 例如,你可以链接它:
x ?? y
的更多信息
答案 2 :(得分:0)
在类型引用 Optionals 之后的问号,这是Swift中的一种机制,它允许您指示任何类型的值都可能不存在。
要打开可选项,您可以使用 Nil Coalescing Operator (??
),它允许在可选值为nil的情况下设置展开值或替代值。< / p>
optionalValue ?? valueIfNil