kotlin 因為要和 java 互通所以選擇了捷徑 untagged unions
Swift 雖然要和 objective c 互通但仍然選擇了 taggged union
結果是?
Swift 超難用
T??
這種兩層的處理起來很煩,不好 debug,compiler 和 IDE 都笨笨的也不會顯示清楚一點。試試處理 json 就知道了 (json 通常會有好幾層 Dictionary
,每一層都會遇到一次 nil)
Kotlin 的做法實用多了,遇到 optional 你就很直覺解 ?
就好了,管他是幾層。
Kotlin 寫起來會有一種順暢的感覺,就是在這種小地方比較 務實。每個小角落都處理的很順,整體累積下來就是寫得爽,你不會有花時間跟它的 type 在對抗的感覺。
I actually do use tabs. It is easy to convert tabs to spaces and vice-versa so we shouldn't waste too much time on this issue.
I have not written code in a shipping product for a long time but I do write enough code to understand the new tools like Typescript or Github (shameless Microsoft plugs).
最近試著結合 OpenSCAD 與 3D 雕塑軟體,這是練習品,順便練模型塗裝。
雕塑時的設想對象其實是 我女兒的人設1。
Java 9 廢棄了 finalize 方法,FileInputStream 等也清空了 finalize 方法的實作,改用 PhantomReference 的機制,JVM 有個執行緒會監控 Reference,在實例不再被參考時,呼叫 close 方法。
至於相容性的部份,若有 FileInputStream 的子類,且自定義了 close 方法,實例化時會有個 AltFinalizer 產生,AltFinalizer 建立時會包裹 FileInputStream,AltFinalizer 的作用就是等著被回收時,呼叫自定義的 finalize 方法(被加了 @SuppressWarnings("deprecation")),其中呼叫了 FileInputStream 的 close 方法。
繞來繞去的 ...