kotlin 學習 之 一些常見用法
When表示式
加強版的switch,支援任意型別
支援純表示式條件分支(類似於if)
表達是必須得完整
fun main(args: Array<String>) {
val x = 5
when(x){
//是否是int
is Int -> println("hello $x")
//是在區間範圍內
in 1..100 -> println("$x 在1-100區間內")
//不在區間內
!in 1..100 -> println("$x 不在1-100區間內" )
//判斷x和下面的表示式值是不是一樣
args[0].toInt() -> println("引數和 $x 一樣")
}
val mode = when{
args.isNotEmpty() && args[0] == "1" ->1
else -> 0
}
println(mode)
}
is 運算子檢測一個表示式是否某型別的一個例項。 如果一個不可變的區域性變數或屬性已經 判斷出為某型別,那麼檢測後的分支中可以直接當作該型別使用,無需顯式轉換:
//sampleStart
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj` 在該條件分支內自動轉換成 `String`
return obj.length
}
// 在離開型別檢測分支後,`obj` 仍然是 `Any` 型別
return null
}
使用 lambda 表示式來過濾(filter)和對映(map)集合:
fun main(args: Array<String>) {
val fruits = listOf("banana", "avocado", "apple", "kiwi")
//sampleStart
fruits
.filter { it.startsWith("a" ) }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
//sampleEnd
}
建立 DTOs(POJOs/POCOs)
data class Customer(val name: String, val email: String)
會為 Customer 類提供以下功能: 所有屬性的 getters (對於 var 定義的還有 setters) equals() hashCode() toString() copy() 所有屬性的 component1() 、 component2() ……等等(參見資料類)
過濾 list
val positives = list.filter { x -> x > 0 }
//或者可以更短:
val positives = list.filter { it > 0 }
遍歷 map/pair型list
for ((k, v) in map) {
println("$k -> $v")
}
k 、 v 可以改成任意名字。
使用區間
for (i in 1..100) { …… } // 閉區間:包含 100
for (i in 1 until 100) { …… } // 半開區間:不包含 100
for (x in 2..10 step 2) { …… }
for (x in 10 downTo 1) { …… }
if (x in 1..10) { …… }
延遲屬性
val p: String by lazy {
// 計算該字串
}
擴充套件函式
fun String.spaceToCamelCase() { …… }
//使用
"Convert this to camelcase".spaceToCamelCase()
建立單例
object Resource {
val name = "Name"
}
對一個物件例項呼叫多個方法 ( with )
class Turtle {
fun penDown()
fun penUp()
fun turn(degrees: Double)
fun forward(pixels: Double)
}
val myTurtle = Turtle()
with(myTurtle) { // 畫一個 100 畫素的正方形
penDown()
for(i in 1..4) {
forward(100.0)
turn(90.0)
}
penUp()
}
合併集合
val list = listOf(1..10,11..20)
val flatList = list.flatMap{it}
flatList.forEach(::println)//輸出1...20
集合元素迭代操作
val list = listOf(1..10)
println(list.reduce { acc, i -> i + acc })//輸出1到10的和
//帶初始值的迭代
println(list.fold(5){acc, i -> i + acc }) //輸出初始值為5,疊加1到10的的和
有條件的迭代
val list = listOf(1,2,3,4,5,6)
list.takeWhile { it % 2 == 1}.forEach(::println)//只輸出1,當出現不滿足條件元素時馬上終止
相關推薦
kotlin 學習 之 一些常見用法
When表示式 加強版的switch,支援任意型別 支援純表示式條件分支(類似於if) 表達是必須得完整 fun main(args: Array<String>) { val x = 5 when(x){
C++之const_cast常見用法
href ase lan val das weibo tls ipp ops ls71kr餃瓷幽透蓖茲http://shufang.docin.com/sina_6341788483gclx8t思煙遲謔爸捌http://jz.docin.com/zsoy17419hcqm蛻
opensuse軟件安裝之zypper常見用法
pen .com 安裝 use open targe gpo arch www https://www.cnblogs.com/xiangzi888/archive/2012/03/10/2388597.htmlopensuse軟件安裝之zypper常見用法
Octave入門之一些常見的語法知識
最近準備開始做數字影象處理的實驗,我安裝了Octave,於是準備繼續用Octave做實驗,(Matlab你懂的,入門買個覺得有點浪費,況且Octave能用懂,轉到Matlab估計也不是很困難)。 下面記錄下學習中覺得用的比較多的基本知識: 1、訪問矩陣的特定元素值 2、獲取矩陣
Kotlin學習之常用高階函式:filter
與filter相似的還有以下幾個: filterNot()和filterNotTo():與filter相反,這兩個函式會過濾出不符合條件的元素; filterIndexed()和filterIndexedTo():這兩個函式接受(Int,T)->Boolean型別的函式,同時檢
Kotlin學習之kotlin-android-extensions
Kotlin Android Extensions是另一個Kotlin團隊研發的外掛,讓我們用更少的程式碼來開發程式 。 當前僅僅包括了view的繫結。該外掛自動建立了很多的屬性來讓我們直接訪問XML中的view。因此不需要你在佈局中去找到這些views。 我們使用的Vi
Kotlin學習之資料整理
android developer Kotlin 官網 《Kotlin for android developers》中文版翻譯 擴充套件(Extensions) - Kotlin 中文文件 Anko 非常強大的Kotlin庫,能讓我們更加快速的開發, 封裝了大量的api,建議前期先不要
Kotlin 學習之準備
Kotlin已經被指定為官方語言,早晚大家都要投靠他,就像as一樣,下面我們就說下如何使用Kotlin。 下載並安裝Kotlin外掛 如果你是android studio 3.0版本可以略過這步,寫這篇文章的時候android studio 3.0 還沒有釋出一個穩定的版本,這裡
Kotlin學習之旅(D1)-學習計劃&基本語法
2017年的Google I/O 開發者大會 Kotlin正式成為了Android的官方支援語言 2018年的國慶小長假最後一天 BlueLzy正式開始Kotlin學習之旅 學習計劃 學什麼? 今天是Kotlin學習之旅的第一天,這次Kotlin之旅的行程計劃是
Kotlin學習之旅(D3)-類與繼承
Day 3 Kotlin學習之旅-第三天 今天的主題是:類與繼承 前言 今日目標 今天空閒的時候 baidu一下,發現簡書,掘金上有很多Kotlin學習總結,但是基本上都是把官方文件一字不落地複製貼上了過來。我不希望自己也是這樣子的,因此在Kotlin學習之
Kotlin學習之旅(D4)-函式與Lambda表示式
Kotlin學習之旅-第四天 今天的主題是:函式與Lambda表示式 前言 函式 Kotlin裡面的函式其實在之前的學習中已經見過了,通過 fun 關鍵字來標識 fun double(x: Int): Int { return 2 * x } 預
Kotlin學習之旅(D8)-From Java to Kotlin
Kotlin學習之旅第八天 今天的主題是:From Java to Kotlin 前言 學習資源 Kotlin官網線上學習課程(需要翻牆):Kotlin Koans kotlin必備知識: 首先如果是有Java基礎的童鞋,推薦直接從官網文件上
Kotlin學習之路一(Kotlin語言簡介)
Kotlin語言的歷史 Kotlin語言是由JetBrains公司從2010年開始構思,2011年退出Kotlin專案,2012年將Kotlin專案開源,2016年釋出了一個穩定版本,所以說,Kotli
java泛型的一些常見用法
本文主要參考下面幾篇文章: http://blog.csdn.net/seu_calvin/article/details/52230032 http://blog.csdn.net/orzlzro/
PyRTF模組生成rtf的一些常見用法
python 寫一些報告,常用的可用win32 com的模組編寫WORD,不過不能居於linux平臺,這裡採用PyRTF模組來生成rtf。對一些基礎操作,做些記錄!指令碼可以優化,對於一些呼叫可以寫成函式形式,這裡是為了理解方便! 注意:參考PyRTF模組例項 #!/us
kotlin學習之for迴圈
java中的for迴圈有兩種實現方式: for (int i = 0; i < 10; i++) { } for (int i = 10; i > 0; i--) { } private ArrayList<String> list = new ArrayL
ROS學習之tf基本用法
主要細節參見wiki,這裡我寫一下它的broadcaster和listener做個記錄: tf_broadcaster.cpp: #include<ros/ros.h> #include<tf/transform_broadcaster.h> in
Calendar 的一些常見用法 如判斷是否是同一天
1、Calendar 判斷是否是同一天 程式碼如下 : 思路 :將兩個Date 型別的時間格式化成Calendar 型別的時間 在分別獲取兩個事件的年月日 進行對比 public static b
Kotlin學習之零散知識累積
1, 在Java中的 void ,就是Kotlin中的 Unit 2,先變數名,冒號,型別。更利於人類理解。 val name: String? = "Sanding" 3,在Java中 我們使用 + 拼接 字串 , 但是在Kotli
我的Kotlin學習之旅(四)
類和繼承 1.類 在Kotlin中類也是用class表示,與Java不同的是,如果這個類沒有內容,可以省略這對大括號 可以只寫: class Person 2.建構函式 在 Kotlin 中類可以有一個主建構函式以及多個二級建構函式。主建構函式是類頭