簡體   English   中英

Swift比較Strings選項與非選項

[英]Swift comparing Strings optionals vs non-optional

在比較Swift中的字符串時,可以將非可選字符串與可選字符串進行比較。

像這樣(文本是可選的,它是空的):

UITextField.text == "" // True

是因為平等運算符單獨解開字符串嗎?

對於每個Equatable類型,也為optionals定義了==操作:

public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

右側的非可選項會自動升級為可選項。

當兩個值都nil或者它們都是非零並且它們相等時, == for optionals返回true

您的理論不適用於以下示例:

let x: String? = nil

if x == "" {
    print("True")
} else {
    print("False") //Printed
}

這里實際發生的是text屬性在初始化時實際上從未實際nil - 它是一個空字符串,如文檔所示

默認情況下,此字符串為@“”。

Swift編譯器不會隱式解包任何選項,而是將該責任留給程序員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM