美文网首页
Kotlin:学习笔记三

Kotlin:学习笔记三

作者: 过期的薯条 | 来源:发表于2018-03-17 15:00 被阅读12次

    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<String>){
    
        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<String>){
        var p=Parent("wxy","23");
        val (name,age)=p;//按照这种方式,可以声明多个变量。并且给予变量赋值
        println(name)// 打印:wxy
    }
    

    2.2泛型

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

    泛型类
    class Teacher1<T>{
        var t: T? = null
        constructor(t:T){
            this.t=t
        }
    }
    
    泛型方法
    
    class Teacher1<T>{
        var t: T? = null
    
        public fun <T>getData(): T? {//这里的泛型T 与泛型类上面的T 没得任何的关系,泛型方法的T换成K,也是可以 的,这里的T是根据输入的类型决定
            return null
        }
    }
    
    fun main(argsp:Array<String>){
        var t=Teacher1<Object>();
        var s:Student= t.getData<Student>()!!;
    }
    }
    

    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<String>) {
    
        var sum = { x: Int, y: Int ->
            if (x > y)
                x
            else
                y
        }
        getData(10,20,sum);
    }
    

    相关文章

      网友评论

          本文标题:Kotlin:学习笔记三

          本文链接:https://www.haomeiwen.com/subject/blrdqftx.html