在 swift-users 上,丹問到:
最近我在做下面這樣的東西:
let dobstring: string
if let dob = dob
else
有沒有更好更地道的寫法能夠實現同樣的功能呢?我猜
serverdateformatter
是nsdateformatter
的乙個例項。如果是這樣的話,丹想要做的東西像下面這樣表述可能會更好:
let dobstring: string =
return serverdateformatter.string(from: dob)
}()
我認為這樣表述會清晰很多,dobstring
只被提到了一次。(如果他使用的不是nsdateformatter
並且需要乙個二級的解包,guard let 語句就需要第二個閉包來對stringfromdate
返回的結果執行可選繫結。)
更新:蒂姆·維穆倫 寫了乙個更棒的單行**:
let dobstring = dob.flatmap(serverdateformatter.stringfromdate) ?? ""
我敢肯定這裡使用map
和flatmap
均可,不過前者節省了四個字元。(譯者注:這裡所說的「均可」,是在 serverdateformatter 不會返回可選型的前提下。) 強制解包看 Swift 的設計
property nonatomic,copy nsstring foo 它轉成 swift 就變成了這樣 var foo string 這樣看上去合情合理。swift 中有 string?和 string 兩種形式,但 oc 中沒有 nsstring?和 nsstring 當 swift 無法區分...
強制解包看 Swift 的設計
1 property nonatomic,copy nsstring foo 它轉成 swift 就變成了這樣 var foo string 這樣看上去合情合理。swift 中有 string?和 string 兩種形式,但 oc 中沒有 nsstring?和 nsstring 當 swift 無法...
解包kwargs python的封包與解包
將多個值賦值給乙個變數時,python會自動將這些值封裝成元組,這個特性稱之為封包 a 1,2,3 print a,type a 1,2,3 當函式返回多個數值時,也會進行封包 def test return 1,2,3 a test print a,type a 1,2,3 實踐中,很少主動使用封...