Unwrap
可以解開一個 Optional 的值,並將此值轉換成一個 View (Optional<Content>)。
Last updated
Was this helpful?
可以解開一個 Optional 的值,並將此值轉換成一個 View (Optional<Content>)。
Last updated
Was this helpful?
只要使用 . 的技巧,可以讓 Unwrap 變成完全沒有必要的存在。
📦 Unwrap 可以解開一個型別為 Value? 的值,然後利用內部的一個 closure turnValueIntoContent: (Value) -> Content
將此值轉換成型別為 Content? == Optional<Content> 的一個 View。
使用 Unwrap 時,要提供它
一個 Value? 的值
一個可以將 Value 轉換為 Content 的 @ViewBuilder closure
然後 Unwrap 就可以利用這個 closure 與 .map() 將 Value? 轉換為 Content? 。最後再透過 body 這個屬性將這個 Content? 呈現出去。
在下面的例子中,我們將一個 Int? (Value == Int) 送給 Unwrap 處理,然後在 Unwrap 內部透過 .map(turnValueIntoContent) 將 Int? 轉換為 Text?。
{ Text(\"$0") }
這個 @ViewBuilder closure 告訴我們:turnValueIntoContent 會把 Int 轉換為 Text,所以這個例子中的 Content == Text。這同時也告訴我們為什麼 .map(turnValueIntoContent) 會將 Int? 轉換為 Text? 了。
因為 Value == Int、Content == Text,所以這個例子的 Unwrap 的完整型別為:Unwrap<Int, Text>
。
- Swift by Sundell
- StackOverflow