kotlin 學習感覺

kotlin 學習感覺

直白的說。。很很差,像屎同樣,原本對此抱有很大的指望和好感度,但通過一成天的學習,徹底失望了,這門語言中間有各類的奇怪的語法和反直覺性的東西jvm

特色

優勢

在jvm的基礎上特別在安全性作了很大的改進。。不少的特性基本杜絕了一些不安全的編碼,而且作了相似 RASP 的安全方案。
官方也宣傳說對Java 100%兼容.ide

先說優勢吧,省得說我在胡亂噴shit
控制流語句變得很靈活支持默認返回,和label 控制等特性
好比when和if 變得極其靈活並且方便好用例如學習

var par = when(i){
    i is null -> false
    i is String -> {
        do some ....
        null #last will auto return to var par
    }
    i in 1..100 -> {
        do some ...
        i * 2
    }else{
        null
    }
    
}

加入了 extension 的特性
例如Java的 Array 並無 swap的方法能夠經過extension的特性靈活加入 this

fun Array<Int>.swap(first:Int,last:Int){
    var f_i = this[first]
    this[first] = this[last]
    this[last] = f_i
}

// this will get [0,1,2,3,4]
var s = Array<Int>(5,{i-> i})
s.swap(2,4) /// will swap

屎同樣的缺點

我試着寫了一個JSwing 呵呵。可是失敗了。官方加了一個 kotlin-swing。。 呵呵編碼

繁雜的語法糖設計

fun <T> cloneWhenGreater(list: List<T>, threshold: T): List<T>
    where T : Comparable,
          T : Cloneable {
  return list.filter { it > threshold }.map { it.clone() }
}

好比原來的 @Override 變成須要特別申明原來的類爲open class,這致使了一個很重大的問題。。目前寫的類之後到底要不要用呢?假如沒有寫open的話。。那麼其餘人若是想要重寫某個方法,就沒有辦法code

及其臃腫的結構
真的不是我想黑他。
在爲了安全性的考慮上,它在普通class 的基礎上加了 一個 open的結構
全部想要繼承的類必須加上open ,這致使我不知道怎麼繼承原始的類好比 Int
還有諸如data ,object ,interface, abstract 這樣單獨的東西。和原來Java 簡介明瞭的class 和 interface 有着很大差異。。若是不是認真記憶,很容易把這些混雜繼承

爲了增長所謂好的特性加入了很是多的語法
好比generics,爲了防止溢出或者 UnMatchClass 這樣的錯誤,特別又(ps:TMD到底還有多少語法)加了 T in out等語法get

fun get(index: Int): T { /* ... */ }
 ...
 fun copy(from: Array<out Any>, to: Array<Any>) {
 // ...
}

同時混入了相似 Object-c中的delegation的東西。。。。。

總結

總體沒有設計哲學,就像一個胡亂的七巧板同樣有各類形狀的單個模塊(我我的偏向相似Lisp的語系),爲了加入好的特性而像拼湊積木同樣加入各類語法,大大加大了學習的成本和編寫的成本。最後在使用的時候每每出現各類問題;和Java的兼容性並不如宣傳說的那麼好。

相關文章
相關標籤/搜索