最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin教程之函數(shù)和包的定義和流程控制

 更新時(shí)間:2017年05月23日 10:58:21   作者:Losileeya  
這篇文章主要介紹了Kotlin教程之函數(shù)和包的定義和流程控制的相關(guān)資料,需要的朋友可以參考下

Kotlin教程之函數(shù)和包的定義和流程控制

包名的定義

在xxx.kt文件的頂部進(jìn)行定義,使用package關(guān)鍵字,定義后,引用包內(nèi)函數(shù)或類,使用包前綴:

package cn.jasonmarzw //包定義
fun doSomething(){} // 定義的函數(shù)
class User(){} //定義的類
在其他文件中使用時(shí): 
可以直接使用 cn.jasonmarzw.doSomething()和 cn.jasonmarzw.User進(jìn)行調(diào)用??梢韵馢ava一樣,使用import引入所需要的包。 
也可以不定義包名,這樣就是默認(rèn)包,default,不需要報(bào)名修飾符就可以訪問(wèn)。 
這樣在項(xiàng)目文件組織結(jié)構(gòu)上,可以考慮按不一樣的結(jié)構(gòu)進(jìn)行分類。

使用

使用import關(guān)鍵字導(dǎo)入所需要的類和函數(shù): 
import cn.jasonmarzw.User 導(dǎo)入U(xiǎn)ser類 
import cn.jasonmarzw.doSomething 導(dǎo)入doSomething函數(shù)

可以使用as關(guān)鍵詞添加別名:

import cn.jasonmarzw.User as Person //添加User別名為Person 
import cn.jasonmarzw.doSomething as justDo //添加doSomething 函數(shù)別名為justDo 
var p = Person() //初始化User類對(duì)象 
justDo() //實(shí)際調(diào)用doSomething函數(shù)

二、流程控制(Control Flow)

If判斷

功能包括以下幾類:

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

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

var valid = a>b?true:false 
var valid = if(a>b) true else false //上述表達(dá)式的替代寫(xiě)法
println(valid) //輸出結(jié)果為true

若if后是多個(gè)表達(dá)式,則返回值是最后一個(gè)表達(dá)式:

var valid=if(a>b){
  println(a)
  a
}else{
  println(b)
  b
}

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

var valid=if(a>b) println(a) else println(b)
println(valid)

輸出結(jié)果為:

kotlin.Unit

kotlin.Unit為無(wú)類型,類似java中的void,可見(jiàn)無(wú)返回。

使用for循環(huán)

fun forLoop(array: Array<String>) {
  for (str in array) {
    println(str)
  }
}

or

fun forIndices(array: Array<String>) {
  for (i in array.indices) {
    println(array[i])
  }
}

使用while循環(huán)

fun whileLoop(array: Array<String>) {
  var i = 0
  while (i < array.size) {
    println(array[i++])
  }
}

主要包括三種類型:

  • Break
  • continue
  • return

1.break和continue

用法與java一致,用在循環(huán)中(for,while),還添加了一層特殊的用法,使用標(biāo)識(shí)符@定義label,一般用在內(nèi)層循環(huán)中跳到外層循環(huán):

loop@ for(i in 0..2){
  for(j in 0..3){
    if(j==2)
      continue@loop//跳到外層循環(huán),繼續(xù)往下執(zhí)行
  }
}

將continue換成break,j值為2的時(shí)候,跳到label定義處,跳出該層循環(huán):

loop@ for(i in 0..2){
  for(j in 0..3){
    if(j==2)
      break@loop//跳到外層循環(huán)label處,跳出改層循環(huán)
  }
}

2.return

在函數(shù)中使用return,當(dāng)函數(shù)沒(méi)有返回值時(shí),可以使用return或者return@label退出函數(shù);當(dāng)函數(shù)有返回值時(shí),不可以使用label返回。

fun foo(){
  var intArray = arrayOf(1,2,3)
  intArray.forEach{
    if(it==2)return //遍歷到第二個(gè)元素時(shí)退出函數(shù)
    println(it)
  }
  println("end")
}

當(dāng)使用label時(shí),表示退出當(dāng)前循環(huán):

fun foo(){
  var intArray = arrayOf(1,2,3)
  intArray.forEach{
    if(it==2)return@forEach //遍歷到第二個(gè)元素時(shí)退出函數(shù)
    println(it)
  }
  println("end")
}

When表達(dá)式

when類型switch表達(dá)式,擁有多個(gè)分支,但是區(qū)別于switch,其具有的

常規(guī)邏輯判斷:

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

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

表達(dá)式:

用作表達(dá)式時(shí),有返回值 :

var a = 1
 var x = when (a) {
     3 -> {
     print(a)
     3 //返回值
   }
     else -> {
       print("unit")
       2 //返回值
     }
   }

查看When表達(dá)式定義:

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

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

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

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

使用集合

遍歷一個(gè)集合:

for (name in names) 
println(name)

使用in操作符檢查一個(gè)集合是否包含一個(gè)對(duì)象:

if (text in names) // 調(diào)用names.contains(text) 
print(“Yes”)

使用Lambda表達(dá)式過(guò)濾和映射集合:

names 
.filter { it.startsWith(“A”) } 
.sortedBy { it } 
.map { it.toUpperCase() } 
.forEach { print(it) }

創(chuàng)建DTO(POJO/POCO)

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

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

try/catch表達(dá)式

fun test() {
   val result = try { 
    count() 
   } catch (e: ArithmeticException) {
   throw IllegalStateException(e)
  } 
  // 和result一起工作
}

本篇基本上對(duì)一些的基本語(yǔ)法進(jìn)行了解釋,不多說(shuō)慢慢學(xué)習(xí)吧。

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

相關(guān)文章

  • java技巧:反射判斷field類型的操作

    java技巧:反射判斷field類型的操作

    這篇文章主要介紹了java技巧:反射判斷field類型的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • java多線程文件下載器的實(shí)現(xiàn)

    java多線程文件下載器的實(shí)現(xiàn)

    本文主要介紹了java多線程文件下載器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java?HashMap中除了死循環(huán)之外的那些問(wèn)題

    Java?HashMap中除了死循環(huán)之外的那些問(wèn)題

    這篇文章主要介紹了Java?HashMap中除了死循環(huán)之外的那些問(wèn)題,這些問(wèn)題大致可以分為兩類,程序問(wèn)題和業(yè)務(wù)問(wèn)題,下面文章我們一個(gè)一個(gè)來(lái)看,需要的小伙伴可以參考一下
    2022-05-05
  • 在Spring Boot中使用swagger-bootstrap-ui的方法

    在Spring Boot中使用swagger-bootstrap-ui的方法

    這篇文章主要介紹了在Spring Boot中使用swagger-bootstrap-ui的方法,需要的朋友可以參考下
    2018-01-01
  • Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼)

    Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼)

    本篇文章主要介紹了Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼), Web Service 是一種新的web應(yīng)用程序分支,他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過(guò)web調(diào)用。有興趣的可以了解一下
    2017-01-01
  • 關(guān)于java后端的詳解

    關(guān)于java后端的詳解

    在本篇文章里小編給各位分享的是關(guān)于java后端的知識(shí)點(diǎn)詳解,學(xué)習(xí)java的朋友們可以參考下。
    2019-08-08
  • Java中數(shù)組與集合的相互轉(zhuǎn)換實(shí)現(xiàn)解析

    Java中數(shù)組與集合的相互轉(zhuǎn)換實(shí)現(xiàn)解析

    這篇文章主要介紹了Java中數(shù)組與集合的相互轉(zhuǎn)換實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • mybatis清除一級(jí)緩存的幾種方式

    mybatis清除一級(jí)緩存的幾種方式

    這篇文章主要介紹了mybatis清除一級(jí)緩存的幾種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java實(shí)現(xiàn)二維碼生成的代碼方法

    Java實(shí)現(xiàn)二維碼生成的代碼方法

    這篇內(nèi)容分享了JAVA實(shí)現(xiàn)二維碼生成的實(shí)例代碼,對(duì)此有需要的朋友們可以測(cè)試參考下。
    2018-07-07
  • Elasticsearch(ES)多種查詢方式案例

    Elasticsearch(ES)多種查詢方式案例

    Elasticsearch是一個(gè)分布式的RESTful搜索和分析引擎,可讓您輕松地大規(guī)模存儲(chǔ),搜索和分析,這篇文章主要給大家介紹了關(guān)于Elasticsearch(ES)多種查詢方式的相關(guān)資料,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

彭山县| 江源县| 建始县| 都兰县| 桦南县| 连城县| 洮南市| 晋宁县| 囊谦县| 逊克县| 鞍山市| 凯里市| 邻水| 营山县| 新龙县| 筠连县| 哈密市| 开化县| 南溪县| 灯塔市| 城固县| 玛沁县| 乐亭县| 格尔木市| 安远县| 茶陵县| 大渡口区| 茌平县| 浏阳市| 榕江县| 库车县| 黑山县| 电白县| 平罗县| 安仁县| 芒康县| 西宁市| 南阳市| 河曲县| 化隆| 湖北省|