Kotlin教程の関数とパッケージの定義とフロー制御


Kotlin教程の関数とパッケージの定義とフロー制御
パッケージ名の定義
xxx.ktファイルの上部で定義し、packageキーワードを使用して定義した後、パケット内関数またはクラスを参照し、パケットプレフィックスを使用する:

package cn.jasonmarzw //   
fun doSomething(){} //      
class User(){} //    

         : 
       cn.jasonmarzw.doSomething()  cn.jasonmarzw.User    。   Java  ,  import       。 
        ,       ,default,             。 
            ,               。
使用

  import             : 
import cn.jasonmarzw.User   User  
import cn.jasonmarzw.doSomething   doSomething  
asキーワードを使ってエイリアスを追加できます。

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は戻り値があり、戻り値が最後の表式であることができます。したがって、3つの演算子の代わりに使用できます。
    
    var valid = a>b?true:false 
    var valid = if(a>b) true else false //          
    println(valid) //     true
    ifの後に複数の表式がある場合、戻り値は最後の表式です。
    
    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)
    出力結果は:
    
    kotlin.Unit
    kotlin.Unitは無タイプで、javaのvoidのように戻りがないことが分かります。
    forループを使う
    
    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ループを使う
    
    fun whileLoop(array: Array<String>) {
      var i = 0
      while (i < array.size) {
        println(array[i++])
      }
    }
    
    主に三つのタイプが含まれています。
  • Break
  • continue
  • リセット
  • 1.breakとcontinue
    使い方はjavaと一致しています。循環中に使われます。また特殊な用法が追加されました。識別子@を使ってlabelを定義します。一般的には内層サイクルで外層サイクルに跳びます。
    
    loop@ for(i in 0..2){
      for(j in 0..3){
        if(j==2)
          continue@loop//      ,      
      }
    }
    
    continueをbreakに変えて、j値が2の時、labelの定義のところにジャンプして、この層の循環から飛び出す:
    
    loop@ for(i in 0..2){
      for(j in 0..3){
        if(j==2)
          break@loop//      label ,      
      }
    }
    
    2.リセット
    関数でreturnを使用して、関数が戻り値にならない場合、returnまたはreturn@labelを使用して関数を終了することができます。関数に戻り値がある場合は、labelで返してはいけません。
    
    fun foo(){
      var intArray = arrayOf(1,2,3)
      intArray.forEach{
        if(it==2)return //             
        println(it)
      }
      println("end")
    }
    
    labelを使用すると、現在のループを終了することを表します。
    
    fun foo(){
      var intArray = arrayOf(1,2,3)
      intArray.forEach{
        if(it==2)return@forEach //             
        println(it)
      }
      println("end")
    }
    
    When表現
    Whenタイプのswitch表現は、複数の分岐を持っていますが、switchとは異なります。
    通常の論理判定:
    
    when(x){ 1 -> print(“is one”) else -> print(“not one”)}
    xを判断する表式の部分は、具体的な値であり、表式であり、値の範囲を判断することができます。
    式:
    式として使用する場合、戻り値があります。
    
    var a = 1
     var x = when (a) {
         3 -> {
         print(a)
         3 //   
       }
         else -> {
           print("unit")
           2 //   
         }
       }
    
    When表現の定義を表示します。
    
    "when" ("(" expression ")")? "{"whenEntry*"}"
    when条件の部分は「("expression")」と定義されています。は、無視できる表現です。
    whenEntry部分定義:whenCodition{、}“-”expression SEMI“else”-”expression SEMI、whenCodition部分はカンマ区切りを使用して、複数のcondition組み合わせをサポートします。whenを表式とする場合は、ユニットタイプの戻り値が必要です。
    whenConndition定義:expression:(in)"!in」)expression:(「is」|"!is」)isRHSは、直接表現、またはin、!n修飾の表現、またはis、!is修飾の表現。
    集合を使う
    集合を巡回:
    
    for (name in names) 
    println(name)
    inオペレータを使用して、セットにオブジェクトが含まれているかどうかを確認します。
    
    if (text in names) //   names.contains(text) 
    print(“Yes”)
    
    Lambda表現を使用して、フィルタリングとマッピングセットを行います。
    
    names 
    .filter { it.startsWith(“A”) } 
    .sortedBy { it } 
    .map { it.toUpperCase() } 
    .forEach { print(it) }
    
    DPOOを作成します(POJO/POCO)
    
    data class Customer(val name: String, val email: String)
    以下の機能を持つCustoomer類を提供します。
    -すべての属性のgetter(とvarのsetter)
    -equals()
    -hashCode()
    -toString()
    -copy()
    -component 1()、component 2()
    try/catch表現
    
    fun test() {
       val result = try { 
        count() 
       } catch (e: ArithmeticException) {
       throw IllegalStateException(e)
      } 
      //  result    
    }
    
    この文章は基本的にいくつかの基本文法を説明しています。
    読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。