2016 var vs let 的停火協定

2021-09-19 08:44:53 字數 1201 閱讀 9696

自那以後,swift 社群一遍又一遍地反對這個決定,尤其是那些在 case 模式匹配以及 if/guard/for 語句中使用了 var 的人們。

今天,swift 團隊正式發表了一項宣告:

經過核心團隊對 se-0003 的討論,我們現在有了新的結論。正如其他主題中提到的那樣,這個提議有些不同尋常,因為它早於 swift 開源之前就被提了出來,因此並沒有經過充分的演化,也沒有開放給公眾去評審。

核心小組將這項提案分成幾個不同的小案例,每乙個都得出了不同的結論。至此我們已經清楚這並不是乙個非黑即白的主題,圍繞該主題存在很多相左的意見。這裡是核心小組給出的結論和一些理由:

引數列表中使用var有下面幾個問題:

結論:核心小組最終決定從引數列表中移除varlet。引數列表中的var是乙個快捷的語法糖,內部其實是定義了一些微小的樣板檔案(底層還是拷貝),然而,經過對開銷和收益比進行權衡還是不值得保留它。

if varfor varif case var等等都是使用了模式語法(又稱為「模式匹配」和 tspl 中的「解構」特性)(校者注:tspl,types and semantics for programming languages)(定稿注:tspl,程式語言中的型別與語義)。而當我們討論是否要從引數列表中移出該特性時,得到的意見很不統一:

結論:核心小組決定在模式匹配中保留varlet

我們對 case 模式中是否禁止使用 var 繫結進行了額外的討論,即case .foo(var x)

結論

消除註解允許使用者充分高效地在 swift 中繼續使用這一模式,但只是人為地將fixit按鈕靜音,編譯器不會得到意外的行為。

-- swift 核心小組

最後總結一下,var 將從引數列表中移除,因為他會使開發者與 inout (注釋 1)混淆起來,但是在其他大部分使用cases下還是保留 var。同時使用 var 繫結比使用 let 繫結更加簡潔。

今天早晨,世界各地的 swift 開發者都在慶祝。讓我們為 swift team 深思熟慮地重新審議舉杯致敬。

深度學習的2016 NIPS 2016速覽

nips nerual information processing systems 是人工智慧 機器學習領域的頂級學術會議,恰逢深度學習火熱,今年於12月7日召開的第30屆nips 2016會議更是快成為 盛會 了 2500多篇高質量 投稿,超過5000人的參會規模,andrew ng ian g...

寫給我的2016

回首過去的2015 2015年,總結上年計畫執行,做的不好主要有兩個原因,一是對計畫的堅持不夠好,二是定的目標太空泛。今年從定目標和堅持開始,給自己定時發郵件,做好計畫監督與執行,制定更加可行和具體的計畫。1 年後向老闆提出漲薪要求,最低目標18k,職務要有上公升,不然就準備換單位 單位沒換,薪酬沒...

你好,我的2016

選擇在2015年末的最後一天開啟這個部落格,有兩個原因。其一,希望記錄或者整理下自己即將所學的東西 其二,歲末年初,算是乙個新的開端吧。2015年,我畢業了,帶著一本畢業證 一箱行李 一段回憶,熾熱的七月,沿著綠蔭,走出校園。跨出大學,自此之後,學生這個身份與我再無相關。半年過去,時至今日,依然不適...