簡體   English   中英

Swift中的存在運算符是什么?

[英]What is the existence operator in Swift?

在目標C中,這是有效的代碼行

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;

這是檢查self.image是否為nil,然后選擇left或right值。 在Swift中,我想重新創建同一行代碼。 實際上,除了沒有分號,應該完全一樣

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero

但這在我的Swift代碼中出現錯誤時無效,“ UIImage不符合協議LogicValue”

什么是正確的Swift代碼?

如果self.image是可選的,則此代碼有效。 否則就沒有理由,因為self.image的字面值不能為零。

以下代碼是完全有效的:

var image : UIImage?
self.scrollView.contentSize = image ? image!.size : CGSizeZero

注意:您必須使用“!” “打開”可選變量image以便您可以訪問其size 這是安全的,因為您只是事先測試了它不是零。

如果image是一個隱式展開的可選內容,這也將起作用:

var image : UIImage!
self.scrollView.contentSize = image ? image.size : CGSizeZero

您正在描述條件賦值三元運算符?: ,其操作方式如下:

(condition) ? (assign this value if the condition evaluates to true) : (assign this value if the condition evaluates to false)

因此, self.image必須是計算為truefalse ,在Swift中就是這樣的,它符合LogicValue協議

與Obj-C僅僅一個對象的存在等同於true ,Swift需要更多...我們被賦予了可選值,可以用作條件值!

因此,如果self.image是可選值,那么您描述的內容就可以工作,如果您看到該錯誤,聽起來好像不是

完善答案:

暫無
暫無

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

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