美文网首页
kotlin函数特性语法

kotlin函数特性语法

作者: 走在冷风中吧 | 来源:发表于2018-07-16 16:54 被阅读12次
  1. 函数的默认值能力
fun printName(name: String = "bob"): String{
    return name
}
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
      
        printName()
        printName("kevin")
    }

图上会分别输出 :
bob
kevin
因为在定义方法的时候, 已经给定默认值, 所以在调用方法的时候, 参数可以为空, 如果为空, 则取默认值


  1. 函数只有一个语句 , 可以将这个语句直接赋值给这个函数
fun printName(name:String) = println("message is $name")
  1. 函数嵌套(由于递归或者不希望外部函数访问)

  1. 扩展函数
    给一些类新增些自己需要的方法, 这个类的对象可以直接调用我们定义的扩展方法
//通过id的Int直接获取到对应的字符串str
fun Int?.getStr(): String = this?.let { BaseApplication.getInstance().getString(this) } ?: ""

  1. lambda函数表达式
    我们来对比下java8的lambda,如下:
    Thread thread2 = new Thread(() -> {});
    使用kotlin的lambda,如下:
    val thread = Thread({println("thread") })
    因为thread只有一个参数, 且这个参数是lambda,可以省略(), 如下:
    val thread = Thread{ println("thread")}

总结:
5.1 kotlin的lamdba的参数是写在花括号内的, 而java8的则需要写在括号里
5.2 kotlin当类只有一个参数, 且参数是lambda表达式,可以省略()
注意: 每个landba表达式都是一个匿名内部对象


  1. lambda闭包声明
    kotlin中可以对一个常量使用lambda闭包进行声明
//testprint是一个lamdba闭包对象
val testprint = {name:String->
   println(name)
}

//调用
testprint("bob")
  1. 高阶函数 (可以使用inline修饰,减少匿名对象的创建,编译的时候会直接转换成语句行 )
    定义: 函数的参数又是一个函数,或者lambda的参数又是一个lambda表达式, 这样的函数就叫高阶函数
  2. 伴生对象
    kotlin中没有静态方法, 想要实现像java中一样的静态方法需要使用伴生对象(companion object)
class FileUtil {
//在伴生对象中声明了一个静态方法
    companion object {
        fun checkFileName(name: String): String {
            return name
        }
    }
}

//在kotlin中调用该方法, 类名.方法
fun main(){
    FileUtil.checkFileName("aa")
}

//在java中调用kotlin中定义的方法, 类名.Companion.方法
public class TestFile {
    public void test(){
        FileUtil.Companion.checkFileName("aa");
    }
}

伴生对象的作用, 可以使用伴生对象创建单例:

//将构造方法私有化
class CarFactory private constructor(){

    companion object {
        //通过伴生对象的方法创造一个内部类
        fun getSingleton():CarFactory{
            return Holder.instance
        }
    }

    private object Holder{
        var instance = CarFactory()
    }
}

fun getCar(){
//直接获得单例对象
    CarFactory.getSingleton()
}

相关文章

  • kotlin函数特性语法

    函数的默认值能力 图上会分别输出 :bobkevin因为在定义方法的时候, 已经给定默认值, 所以在调用方法的时候...

  • 快速上手 Kotlin 开发系列之函数与函数嵌套

    在前面的文章中简单地介绍了 Kotlin 中函数的声明,本节将介绍 Kotlin 另外一种语法特性:函数嵌套 函数...

  • Kotlin2.1基本要素:函数和变量

    2.1.1 Hello World 在Kotlin中,这样写: 特性和语法: 关键字fun用来声明一个函数。 参数...

  • Kotlin高阶函数进阶

    Kotlin函数可以作为参数传递吗? 答案是可以的。但是我们知道kotlin的这种特性其实也是一种语法糖,它并不能...

  • 快速上⼿ Kotlin

    快速上⼿ Kotlin 基础语法 函数基础语法 与 Java 代码互调 Java 与 Kotlin 交互的语法变化...

  • Kotlin 函数式编程思想 FP in Kotlin

    Kotlin 函数式编程思想 : FP in Kotlin 函数式编程特性 闭包和高阶函数 函数编程支持函数作为第...

  • Kotlin-第3节、函数与Lambda闭包

    目录:1、函数的特性语法2、嵌套函数3、扩展函数4、Lambda闭包语法5、高阶函数6、内联函数 1、函数的特性语...

  • Kotlin —— 扩展函数

    一、前言 Kotlin中的扩展函数特性让我们的代码变得更加简单和整洁。扩展函数是Kotlin语言中独有的新特性,利...

  • Kotlin学习笔记:类和接口

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:概述

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

网友评论

      本文标题:kotlin函数特性语法

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