Kotlin基礎入門(二)

今天來學習下基本語法,參考了官方文檔


package com.kotlin

導入

import關鍵字
import java.util*

類型的聲明

Kotlin使用var 定義變量

var a:Int = 1

var b:Double = 2

使用val 定義常量

val c:Char = "你好"

函數


函數聲明

Kotlin使用fun關鍵字作爲函數聲明

[java] view plain copy
  1. fun double(a:Int) {  
  2.     return 2*a  
  3. }  

函數用法

傳統方式:
[java] view plain copy
  1. val result = double(2)  
調用類成員
cal.double(2) //創建cal實例,並且調用double

函數參數

函數參數使用pascal定義法,即name:type。參數之間使用逗號隔開,參數必須是顯式類型
[java] view plain copy
  1. fun haha(hao:Char) : Char {  
  2.     ...  
  3. }  

默認參數

函數可以有默認值,當省略參數時,使用默認值,以下引用官方手冊
[java] view plain copy
  1. fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) {  
  2. ……  
  3. }  

默認值通過類型後面的 = 及給出的值來定義。覆蓋方法總是使用與基類型方法相同的默認參數值。 當覆蓋一個帶有默認參數值的方法時,必須從簽名中省略默認參數值:

[java] view plain copy
  1. open class A {  
  2.     open fun foo(i: Int = 10) { …… }  
  3. }  
  4.   
  5. class B : A() {  
  6.     override fun foo(i: Int) { …… }  // 不能有默認值  
  7. }  

如果一個默認參數在一個無默認值的參數之前,那麼該默認值只能通過使用命名參數調用該函數來使用:

[java] view plain copy
  1. fun foo(bar: Int = 0, baz: Int) { /* …… */ }  
  2.   
  3. foo(baz = 1// 使用默認值 bar = 0  

不過如果最後一個lambda表達式參數從括號外傳給函數函數調用,那麼允許默認參數不傳值:

[java] view plain copy
  1. fun foo(bar: Int = 0, baz: Int = 1, qux: () -> Unit) { /* …… */ }  
  2.   
  3. foo(1) { println("hello") } // 使用默認值 baz = 1   
  4. foo { println("hello") }    // 使用兩個默認值 bar = 0 與 baz = 1  

命名參數

可以在調用函數時使用命名的函數參數。當一個函數有大量的參數或默認參數時這會非常方便。

給定以下函數

[java] view plain copy
  1. fun reformat(str: String,  
  2.              normalizeCase: Boolean = true,  
  3.              upperCaseFirstLetter: Boolean = true,  
  4.              divideByCamelHumps: Boolean = false,  
  5.              wordSeparator: Char = ' ') {  
  6. ……  
  7. }  

我們可以使用默認參數來調用它
[java] view plain copy
  1. reformat(str)  

然而,當使用非默認參數調用它時,該調用看起來就像
[java] view plain copy
  1. reformat(str, truetruefalse'_')  

使用命名參數我們可以使代碼更具有可讀性
[java] view plain copy
  1. reformat(str,  
  2.     normalizeCase = true,  
  3.     upperCaseFirstLetter = true,  
  4.     divideByCamelHumps = false,  
  5.     wordSeparator = '_'  
  6. )  

並且如果我們不需要所有的參數
[java] view plain copy
  1. reformat(str, wordSeparator = '_')  


定義函數


定義一個有兩個Int類型的入參,及返回類型是Int。
[java] view plain copy
  1. fun sum1(a:Int,b:Int) : Int {  
  2.     return a + b  
  3. }  


定義一個將表達式作爲函數體、返回值類型爲自動推斷的函數
[java] view plain copy
  1. fun sum2(a:Int,b:Int) = a + b  


定義一個函數,返回無意義的值
[java] view plain copy
  1. fun printSum1(a: Int, b: Int): Unit {  
  2.     println("sum of $a and $b is ${a + b}")  
  3. }  
其中${dosth}指的是內插語句
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章