swift 5.2更新內(nèi)容

Swift 5.2 Released!

SE-0249:將Key Path表達(dá)式作為函數(shù):(Root)->Value

// ? ?已知結(jié)構(gòu)體

struct User {

? ? let email: String

? ? let isAdmin: Bool

}

?生成一個(gè)郵箱地址的數(shù)組,過(guò)濾管理員剪撬,管理員數(shù)組

users.map { $0.email }?

users.filter { $0.isAdmin }

users.compactMap { $0.isAdmin }

采用新的表達(dá)式:\Root.value

users.map(\.email)

users.filter(\.isAdmian)

語(yǔ)法解釋?zhuān)篭Root.value相當(dāng)于{$0[keyPath: \Root.value]}

users.map(\.email) === user.map { $0[keyPath: \User.email] }

語(yǔ)法注意:\Root.value是方法(Root)->Value的縮寫(xiě)摄乒,當(dāng)使用臨時(shí)變量時(shí):

let kp = \User.email ? ? ? ?//????錯(cuò)誤?

let kp: (User) -> String = \User.email????// ? ?正確

let kp = \User.email as (User) -> String????// ? ?正確

users.map(kp)

編譯器做了什么?

let kp: (User) -> String = \User.email ?// ?代碼

let kp: (User) -> String = { kp in { root in root[keyPath: kp] } }(\User.email) ?// ?編譯器后的代碼

swift為啥添加該語(yǔ)法残黑?

This is a purely additive change and has no impact.//??


SE-0253:靜態(tài)方法自定義

callAsFunction:

struct Adder {

? ? var base: Int

? ? func?callAsFunction(_ x: Int) -> Int {

? ? ? ? return base + x

????}

? ? func callAsFunction<T>(_ x: T, bang: Bool) throws -> T where T: BinaryInteger {

? ? ? ? if bang { return T(Int(exactly: x)! + base) }

? ? ? ? else { retuurn T(Int(truncatingIfNeeded: x) + base) }

????}

}

let add = Adder(base: 3)

add(10) ? ?// => 13

try add(4, bang: true) // => 5

subscript:

struct Polynomial {

? ? let coefficients: [Float]

}

extension Polynomial {

? ? subscript(input: Float) -> Float {

? ? ? ? var result: Float = 0

? ? ? ? for (i, c) in coefficients.enumerated() {

? ? ? ? ? ? result += c * pow(input, Float(i))

????????}

? ? ? ? return result

????}

}

let polynomial = Polynomial(coefficients: [2, 3, 4])

print(polynomial.evaluated(at: 2)) // => 24

與閉包結(jié)合:類(lèi)似于代理

struct BoundClosure<T, F: (T) -> ()>: () -> () {

????var function: F

????var value: T

????func callAsFunction() { return function(value) }

}

let f = BoundClosure({ print($0) }, x) // instantiates BoundClosure<(underlying type of closure), Int>

f() // invokes call on BoundClosure

提高編譯結(jié)果準(zhǔn)確性:錯(cuò)誤代碼提示更準(zhǔn)確

優(yōu)化代碼不全:代碼提示更人性化

優(yōu)化編譯算法


· Whole Module (typically used for Release builds)

·?Incremental (typically used for Debug builds)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馍佑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梨水,更是在濱河造成了極大的恐慌拭荤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疫诽,死亡現(xiàn)場(chǎng)離奇詭異舅世,居然都是意外死亡旦委,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)雏亚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缨硝,“玉大人,你說(shuō)我怎么就攤上這事评凝∽菲希” “怎么了腺律?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵奕短,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我匀钧,道長(zhǎng)翎碑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任之斯,我火速辦了婚禮日杈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佑刷。我一直安慰自己莉擒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瘫絮。 她就那樣靜靜地躺著涨冀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪麦萤。 梳的紋絲不亂的頭發(fā)上鹿鳖,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音壮莹,去河邊找鬼翅帜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛命满,可吹牛的內(nèi)容都是我干的涝滴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胶台,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歼疮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起概作,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤腋妙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后讯榕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體骤素,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匙睹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了济竹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痕檬。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖送浊,靈堂內(nèi)的尸體忽然破棺而出梦谜,到底是詐尸還是另有隱情,我是刑警寧澤袭景,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布唁桩,位于F島的核電站,受9級(jí)特大地震影響耸棒,放射性物質(zhì)發(fā)生泄漏荒澡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一与殃、第九天 我趴在偏房一處隱蔽的房頂上張望单山。 院中可真熱鬧,春花似錦幅疼、人聲如沸米奸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悴晰。三九已至,卻和暖如春狼忱,著一層夾襖步出監(jiān)牢的瞬間膨疏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工钻弄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佃却,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓窘俺,卻偏偏與公主長(zhǎng)得像饲帅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘤泪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,699評(píng)論 0 3
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類(lèi): pyspark.sql...
    mpro閱讀 9,457評(píng)論 0 13
  • 英文文檔灶泵,一開(kāi)始我也是抗拒的,邊翻譯邊看对途,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過(guò)了赦邻,我的英文基礎(chǔ)其實(shí)很差。附上鏈接:鏈接:...
    lonecolonel閱讀 9,909評(píng)論 3 1
  • [轉(zhuǎn)]SQLite.swift Documentation InstallationCarthageCocoaPo...
    mqhong閱讀 7,343評(píng)論 0 2
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語(yǔ)閱讀 3,838評(píng)論 0 6