1樓:冰雪情緣
按照歷史長河來說,Kotlin 是可以在 Android站穩腳跟的,有點類似IOS開發的Object-c, swit...
但是Kotlin想流行起來,很難,很難,很難.. ...
這種感覺就像QT.. ..., AS... ..只能在自己領域的掙扎.
如果是搞 Android開發的同學,建議學一手Kotlin.
但是在我眼中,語言只是工具,只是實現我們想法的工具而已,主要是看這個工具能不能便捷,安全,快速的完成我們的想法。
2樓:深海
Kotlin 不是 Swift on JVM, 我特別討厭這種說法, 這是對 Swift 的侮辱...
Swift 有 sum type, Kotlin 用 sealed class 來模擬, 但易用性真的不敢恭維, 寫起來要加不少莫名其妙的字元.
// Kotlin
sealed
class
Expr
data
class
Const
(val
number
:Double):
Expr
()data
class
Sum(
vale1
:Expr
,vale2:
Expr):
Expr
()object
NotANumber
:Expr
()fun
eval
(expr
:Expr
):Double
=when
(expr
)fun
main
()這是 Swift 的寫法 :
// Swift
indirect
enum
Expr
func
eval(_
expr
:Expr
)->Double
(eval
(.sum
(.const
(1.0),.
const
(2.0
))))
// --> 3.0
Swift 有元組, Kotlin 沒有.
// Kotlin
val(
state
,msg)=
404to
"not found."
val(
state
,msg)=
Pair
(404
,"not found."
)println
("error: $state ($msg)"
)這是 Swift (以及所有正常語言) 的寫法 :
// Swift
let(
state
,msg)=
(404
,"not found."
("error:
\(state)(
\(msg))"
)Swift 有良好的陣列 / 詞典字面量
// Kotlin
valcube
=arrayListOf
(arrayListOf(1
,2,3
),arrayListOf(4
,5,6
),arrayListOf(7
,8,9
))Swift 裡是這樣的
// Swift
letcube=[[
1,2,
3],[4
,5,6
],[7,
8,9]]
Swift 能自定義運算子 (包括字首, 中綴和字尾, 優先順序), Kotlin 不知道是不是覺得這個東西複雜度太高, 只能允許中綴表示法.
// Kotlin
infix
funDouble
.sumOfSquare
(rhs
:Double
):Double
valx
=2.0
sumOfSquare
3.0Swift 中是這樣的
// Swift
infix
operator
*+*func
*+*(
lhs:
Double
,rhs
:Double
)->Double
2.0*+*
3.0Swift 有 inout 引數, 可以直接改變函式的引數, 而 Kotlin (很多語言也) 沒有
// Swift
infix
operator
<->func
<-><
T>(lhs:
inoutT,
rhs:
inoutT)
var(a,
b)=(
1,2)
a<->
bprint
("a, b = \(a
), \(b
)")// a, b = 2, 1
Swift 中運算子可以直接作為高階函式引數
// Kotlin
valsum
=arrayListOf(1
,4,5
,2,3
).reduce
// 15
Swift 裡可以直接用裸的 +
// Swift
letsum=[
1,4,
5,2,
3].reduce(0
,+)// 15
而 Kotlin 裡那些語法特性, Swift 裡當然有 :
擴充套件方法 extension
extension
Int}}3.
times
高階函式, 語法和 Kotlin 十分類似.(1.
..100
).map
.filter
空安全和 Optional
letx
:Int?=
nilx
?.distance(to
:5)// nil
lety=x
??0// 預設值
ifletit=
x(完)
3樓:FRANK
了解了一下Kotlin又了解了一下Scala。發現:Kotlin除了空安全之外全部被Scala吊打。
Scala的型別推斷和集合模擬Kotlin強的不是一點半點。
4樓:崔夢
子彈不過是比石頭更堅硬了而已,有什麼好鼓吹的?但你知道這個階段發展用了多少萬年嗎?你的一句而已真是讓人貽笑大方!
某些人啊以為這一輩子就可以靠思想工作了,你的所謂思想又是什麼?GOF拳腳?OO思想?還是演算法?其實你也沒乙個敢說精通的。你所說思想到底是什麼?
你說語言只是工具,但工具是子彈還是石頭可影響了人類上萬年的進化成果,工具的進化必然引起人類思想認知的進步,而且思想的認知受工具影響的認識,沒有航天活動沒有衛星拍照,有多少人會在直覺上承認地球是圓的?
知乎大V,丟人現眼!
5樓:Sugar
「我王境澤就是餓死,從這裡跳下去摔死,也不寫一行kotlin」
「嗯~真香,這空安全真踏實,這lamda箭頭真亮,這迴圈真簡潔。」
6樓:大師之劍
語言只是解決問題的工具,何必要鄙視任何一門呢。新的語言必然是踩著老語言的肩膀才能站得更高,當某一天老的語言退休時,希望我們還能記得它們做出的貢獻。
7樓:
讓我想到歷史上很多的東西。特別是atm,很悲催的乙個東西。在傳輸層,和WDM競爭失敗,在網路層,和IP競爭失敗,在區域網,和乙太網競爭失敗。
8樓:柳凌峰
補充更新
kotlin和swift有點殊途同歸的意思。
最近在看kotlin時一直有乙個問題很好奇,jetbrain那麼牛,為什麼不乾脆在jvm上寫乙個python,然後乾掉tab保留括號,直接完成生命大和諧。
9樓:禪與程式設計藝術
《 Kotlin極簡教程》 (機械工業出版社)http://www.
10樓:
/*** `if` is an expression, i.e. it returns a value.
* Therefore there is no ternary operator (condition ? then : else),
* because ordinary `if` works fine in this role.
* See Control Flow: if, when, for, while
*/fun main(args: Array)
fun max(a: Int, b: Int) = if (a > b) a else b
Use a conditional expression.kt
11樓:
Kotlin 本身語法特質還是不錯的
不過我覺得需要乙個像 Ruby China 一樣的論壇版來整合社群資源, 於是我決定和群裡的大佬合夥搞乙個 https://
kotliner.cn
問答版blog.kotliner.cn部落格
Kotlin 作為 Android 開發語言相比傳統 Java 有什麼優勢?
萬宵 我說了乙個kotlin的 毛病 吧 kotlin library暴露的方法如果帶有預設引數,在後續給這個方法增加預設引數的時候,會導致新的kotlin library和舊的二進位制不相容,所有依賴了這個library的地方都需要重新編譯。只能新增方法,不能在原方法上修改。預設引數帶來的優勢蕩然...
如何評價Kotlin1 3正式版發布?
龍小龍 我主要關注的是協程api,所以我只針對這部分來說說我的感覺。Coroutine終於不用experimental了,煩人的警告沒了 可是我從0.2x.x的版本遷移到1.0.1的庫時發現api改了很多,很多的CoroutineBuilder從頂級方法變成了CoroutineScope的擴充套件方...
如何看待Kotlin 桌面 UI Jetpack Compose for Desktop?
昱彧 老實講並不看好,學kt的以Android開發居多,Compose這玩意現在正式版都沒出,你看flutter也鼓吹桌面ui現在也就那樣 戀貓 先聊點體外話 隨著技術在乙個領域的飽和,無論是為了 KPI 還是為了謀求新的發展,橫向開始支援新的平台就成了一種必然。同時技術的發展只會讓門檻越來越低,低...