Kotlin基礎入門(二)
阿新 • • 發佈:2019-02-15
今天來學習下基本語法,參考了官方文件
包
package com.kotlin匯入
import關鍵字 import java.util*型別的宣告
Kotlin使用var 定義變數
var a:Int = 1
var b:Double = 2
使用val 定義常量
val c:Char = "你好"
函式
函式宣告
Kotlin使用fun關鍵字作為函式宣告- fun double(a:Int) {
- return2*a
- }
函式用法
傳統方式:- val result = double(2)
函式引數
函式引數使用pascal定義法,即name:type。引數之間使用逗號隔開,引數必須是顯式型別- fun haha(hao:Char) : Char {
- ...
- }
預設引數
函式可以有預設值,當省略引數時,使用預設值,以下引用官方手冊- fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) {
- ……
- }
預設值通過型別後面的 = 及給出的值來定義。覆蓋方法總是使用與基型別方法相同的預設引數值。 當覆蓋一個帶有預設引數值的方法時,必須從簽名中省略預設引數值:
-
open
- open fun foo(i: Int = 10) { …… }
- }
- class B : A() {
- override fun foo(i: Int) { …… } // 不能有預設值
- }
如果一個預設引數在一個無預設值的引數之前,那麼該預設值只能通過使用命名引數呼叫該函式來使用:
- fun foo(bar: Int = 0, baz: Int) { /* …… */ }
- foo(baz = 1) // 使用預設值 bar = 0
-
fun foo(bar: Int =
- foo(1) { println("hello") } // 使用預設值 baz = 1
- foo { println("hello") } // 使用兩個預設值 bar = 0 與 baz = 1
命名引數
可以在呼叫函式時使用命名的函式引數。當一個函式有大量的引數或預設引數時這會非常方便。
給定以下函式
- fun reformat(str: String,
- normalizeCase: Boolean = true,
- upperCaseFirstLetter: Boolean = true,
- divideByCamelHumps: Boolean = false,
- wordSeparator: Char = ' ') {
- ……
- }
我們可以使用預設引數來呼叫它
- reformat(str)
然而,當使用非預設引數呼叫它時,該呼叫看起來就像
- reformat(str, true, true, false, '_')
使用命名引數我們可以使程式碼更具有可讀性
- reformat(str,
- normalizeCase = true,
- upperCaseFirstLetter = true,
- divideByCamelHumps = false,
- wordSeparator = '_'
- )
並且如果我們不需要所有的引數
- reformat(str, wordSeparator = '_')
定義函式
定義一個有兩個Int型別的入參,及返回型別是Int。- fun sum1(a:Int,b:Int) : Int {
- return a + b
- }
- fun sum2(a:Int,b:Int) = a + b
定義一個函式,返回無意義的值
- fun printSum1(a: Int, b: Int): Unit {
- println("sum of $a and $b is ${a + b}")
- }