Kotlin基础入门(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012963866/article/details/78140256

今天来学习下基本语法,参考了官方文档


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}指的是内插语句

猜你喜欢

转载自blog.csdn.net/u012963866/article/details/78140256