簡體   English   中英

多個讓一個保護語句與單個let一樣嗎?

[英]Are multiple lets in a guard statement the same as a single let?

以下是否有任何功能差異:

guard let foo = bar, let qux = taco else { 
  ...
}

和:

guard let foo = bar, qux = taco else {
  ...
}

在我看來,他們是相同的,並不需要額外的let

這些在Swift 3中有所不同。在這種情況下:

guard let foo = bar, let qux = taco else { 

你說'可選 - 解開foo吧。如果成功,可選擇將taco打包成qux。如果成功繼續。其他......“

另一方面這個:

guard let foo = bar, qux = taco else {

說“可選 - 展開到foo中。作為布爾值,評估分配語句qux = taco ”由於賦值語句不在Swift中返回布爾值,這是一個語法錯誤。

這種更改允許更靈活的guard語句,因為您可以在整個鏈中混合可選的展開和布爾值。 在Swift 2.2中,您必須解開所有內容,然后在where子句的末尾執行所有布爾檢查(這有時使得無法表達條件)。

不再是Swift 3.0中的不一樣了。 Xcode會給您一個錯誤,並要求您在應用多個變量時添加let

在此輸入圖像描述

所以你應該使用

guard let foo = bar, let qux = taco else { 
  ...
}

暫無
暫無

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

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