一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - Kotlin教程之函數和包的定義和流程控制

Kotlin教程之函數和包的定義和流程控制

2020-10-26 16:38Losileeya JAVA教程

這篇文章主要介紹了Kotlin教程之函數和包的定義和流程控制的相關資料,需要的朋友可以參考下

Kotlin教程之函數和包的定義和流程控制

包名的定義

在xxx.kt文件的頂部進行定義,使用package關鍵字,定義后,引用包內函數或類,使用包前綴:

?
1
2
3
package cn.jasonmarzw //包定義
fun doSomething(){} // 定義的函數
class User(){} //定義的類
?
1
2
3
4
在其他文件中使用時:
可以直接使用 cn.jasonmarzw.doSomething()和 cn.jasonmarzw.User進行調用。可以像Java一樣,使用import引入所需要的包。
也可以不定義包名,這樣就是默認包,default,不需要報名修飾符就可以訪問。
這樣在項目文件組織結構上,可以考慮按不一樣的結構進行分類。

使用

?
1
2
3
使用import關鍵字導入所需要的類和函數:
import cn.jasonmarzw.User 導入User類
import cn.jasonmarzw.doSomething 導入doSomething函數

可以使用as關鍵詞添加別名:

?
1
2
3
4
import cn.jasonmarzw.User as Person //添加User別名為Person
import cn.jasonmarzw.doSomething as justDo //添加doSomething 函數別名為justDo
var p = Person() //初始化User類對象
justDo() //實際調用doSomething函數

二、流程控制(Control Flow)

If判斷

功能包括以下幾類:

  • 常規邏輯判斷: if(a>b) print(a) else print(b)
  • 返回值:

if允許有返回值,返回值在最后的表達式,因此可以用作替代三元運算符?:

?
1
2
3
var valid = a>b?true:false
var valid = if(a>b) true else false //上述表達式的替代寫法
println(valid) //輸出結果為true

若if后是多個表達式,則返回值是最后一個表達式:

?
1
2
3
4
5
6
7
var valid=if(a>b){
  println(a)
  a
}else{
  println(b)
  b
}

valid的值是a或者b,若去掉a和b,觀察下valid的值:

?
1
2
var valid=if(a>b) println(a) else println(b)
println(valid)

輸出結果為:

?
1
kotlin.Unit

kotlin.Unit為無類型,類似java中的void,可見無返回。

使用for循環

?
1
2
3
4
5
fun forLoop(array: Array<String>) {
  for (str in array) {
    println(str)
  }
}

or

?
1
2
3
4
5
fun forIndices(array: Array<String>) {
  for (i in array.indices) {
    println(array[i])
  }
}

使用while循環

?
1
2
3
4
5
6
fun whileLoop(array: Array<String>) {
  var i = 0
  while (i < array.size) {
    println(array[i++])
  }
}

主要包括三種類型:

  • Break
  • continue
  • return

1.break和continue

用法與java一致,用在循環中(for,while),還添加了一層特殊的用法,使用標識符@定義label,一般用在內層循環中跳到外層循環:

?
1
2
3
4
5
6
loop@ for(i in 0..2){
  for(j in 0..3){
    if(j==2)
      continue@loop//跳到外層循環,繼續往下執行
  }
}

將continue換成break,j值為2的時候,跳到label定義處,跳出該層循環:

?
1
2
3
4
5
6
loop@ for(i in 0..2){
  for(j in 0..3){
    if(j==2)
      break@loop//跳到外層循環label處,跳出改層循環
  }
}

2.return

在函數中使用return,當函數沒有返回值時,可以使用return或者return@label退出函數;當函數有返回值時,不可以使用label返回。

?
1
2
3
4
5
6
7
8
fun foo(){
  var intArray = arrayOf(1,2,3)
  intArray.forEach{
    if(it==2)return //遍歷到第二個元素時退出函數
    println(it)
  }
  println("end")
}

當使用label時,表示退出當前循環:

?
1
2
3
4
5
6
7
8
fun foo(){
  var intArray = arrayOf(1,2,3)
  intArray.forEach{
    if(it==2)return@forEach //遍歷到第二個元素時退出函數
    println(it)
  }
  println("end")
}

When表達式

when類型switch表達式,擁有多個分支,但是區別于switch,其具有的

常規邏輯判斷:

?
1
when(x){ 1 -> print(“is one”) else -> print(“not one”)}

判斷x的表達式部分,可以是具體的值,可以是表達式,可以是取值范圍判斷。

表達式:

用作表達式時,有返回值 :

?
1
2
3
4
5
6
7
8
9
10
11
var a = 1
 var x = when (a) {
     3 -> {
     print(a)
     3 //返回值
   }
     else -> {
       print("unit")
       2 //返回值
     }
   }

查看When表達式定義:

?
1
"when" ("(" expression ")")? "{"whenEntry*"}"

when條件部分定義為:(“(” expression “)”)?,是一個表達式,可忽略

whenEntry部分定義: whenCondition{“,”} “->” expression SEMI “else” “->” expression SEMI,whenCondition部分允許使用逗號分隔,支持多個condition組合,如:is String,is Boolean -> println(“cool”),->符號表示后面是內容部分,由表達式expression和SEMI組成,后面的else,當when當做表達式時,必須要有,否則返回值為Unit類型。

whenCondition定義::expression: (“in” | “!in”) expression : (“is” | “!is”) isRHS,可以直接是表達式,或者是in、!in修飾的表達式,或者 is、!is修飾的表達式。

使用集合

遍歷一個集合:

?
1
2
for (name in names)
println(name)

使用in操作符檢查一個集合是否包含一個對象:

?
1
2
if (text in names) // 調用names.contains(text)
print(“Yes”)

使用Lambda表達式過濾和映射集合:

?
1
2
3
4
5
names
.filter { it.startsWith(“A”) }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { print(it) }

創建DTO(POJO/POCO)

?
1
data class Customer(val name: String, val email: String)

提供帶有下列功能的Customer類:
-所有屬性的getter(和var的setter)
-equals()
-hashCode()
-toString()
-copy()
-component1(),component2()

try/catch表達式

?
1
2
3
4
5
6
7
8
fun test() {
   val result = try {
    count()
   } catch (e: ArithmeticException) {
   throw IllegalStateException(e)
  }
  // 和result一起工作
}

本篇基本上對一些的基本語法進行了解釋,不多說慢慢學習吧。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/u013278099/article/details/50967659

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日产乱码卡1卡2卡三卡四在线 | 天天操免费视频 | 国产精品九九免费视频 | 国产精品青青青高清在线观看 | 亚洲国产精品久久无套麻豆 | 1024免费观看完整版在线播放 | 日本成人免费在线视频 | 四虎影视最新 | 亚洲国产精品第一区二区三区 | 国产精品合集一区二区 | 成人免费观看一区二区 | 99久久www免费 | 肉浦团在线观看 | free性丰满hd性欧美厨房 | 精品午夜中文字幕熟女人妻在线 | 按摩师他揉我奶好爽捏我奶 | 蜜桃麻豆| 四虎影视永久在线观看 | 亚洲激情在线 | 爱爱小说漫画 | 91精品国产综合久 | 青青青青在线视频 | 久久精品123 | 古代双性美人被老糟蹋 | 女人把扒开给男人爽的 | 女子监狱第二季未删减在线看 | 91sao国产在线观看 | 双子母性本能在线观看 | 国产欧美一区二区三区久久 | 四虎4hu永久免费国产精品 | 亚洲免费精品 | 脱jk裙的美女露小内内无遮挡 | 四虎精品成人免费观看 | 女人把扒开给男人爽的 | 欧美成人v视频免费看 | 日本嫩交 | 美女靠逼动漫 | 日本一卡二卡3卡四卡无卡网址 | 亚洲精品www久久久久久久软件 | 好大好爽好硬 | 国产免费小视频在线观看 |