Kotlin:学习笔记三

1.引言

今天晚上学习学习下,Kotlin数据类,泛型。

2正题

2.1数据类

用关键字data修饰的class,就是数据类。数据类必须要有主构造方法,而且至少有一个参数,而且主构造方法的参数必须用var或者val修饰。
数据类自动帮我们实现:

  • equals()/hashCode()
  • toString() 格式是 "PersonData(name=PersonData, age=20)"
  • copy() 方法
    使用示例:
data class Teacher constructor(var name:String,var age:Int){

}
fun main(args:Array){

    var t=Teacher("wxy",123);
    var t1=t.copy(t.name,456);
    System.out.println(t1.age)
    System.out.println(t.age)
    System.out.println(t.equals(t1))
}

数据类可以进行解构声明:例如

data class Parent constructor(var name:String,var age:String){
}

fun main(args:Array){
    var p=Parent("wxy","23");
    val (name,age)=p;//按照这种方式,可以声明多个变量。并且给予变量赋值
    println(name)// 打印:wxy
}

2.2泛型

kotlin泛型和java泛型基本上一致。

泛型类
class Teacher1{
    var t: T? = null
    constructor(t:T){
        this.t=t
    }
}
泛型方法

class Teacher1{
    var t: T? = null

    public fun getData(): T? {//这里的泛型T 与泛型类上面的T 没得任何的关系,泛型方法的T换成K,也是可以 的,这里的T是根据输入的类型决定
        return null
    }
}

fun main(argsp:Array){
    var t=Teacher1();
    var s:Student= t.getData()!!;
}
}
 
 

2.3高阶函数

如果一个函数的的参数是函数,或者返回值是函数,那么这个函数就是高阶函数.参考文章:http://blog.csdn.net/zxm317122667/article/details/78255481

知道了什么是高阶函数之后,我们可以使用一段伪代码来演示如何定义一个高阶函数,如下所示:

fun 高阶函数名(参数函数名:参数函数类型):高阶函数返回类型{
    高阶函数体
    ...
}

函数文本语法

  • 第一种写法
    var sum = {x: Int,y: Int -> x + y}
  • 第二种写法
val sum: (Int, Int) -> Int = {x, y -> x+y }

高阶函数例子:

fun getData(a: Int, b: Int, s: (a: Int, b: Int) -> Int): Int {
    return s.invoke(a, b)
}

fun main(args: Array) {

    var sum = { x: Int, y: Int ->
        if (x > y)
            x
        else
            y
    }
    getData(10,20,sum);
}

你可能感兴趣的:(Kotlin:学习笔记三)