IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> kotlin和java中函数作为方法的参数 -> 正文阅读

[移动开发]kotlin和java中函数作为方法的参数

1.Kotlin中使用

在java中有时候使用函数式编程的时候,有这种Producer,Consumer作为函数的参数的场景,在kotlin中的使用记录下;

fun randomProvier(c: (Double) -> Unit): Double {
    var n = Math.random()    //  步骤1:生成随机数
    println("生成随机数")      //  步骤2:
    c(n)                     //  步骤3:随机数n作为参数,执行传入的代码逻辑
    return n                //   步骤4:返回随机数n
}

fun main() {
    randomProvier { t ->
        println("打印随机数参数")  //步骤3.1
        println(t)               //步骤3.1
    }
}

randomProvier的参数是一段执行逻辑,输入参数是一段代码逻辑;先生成一个随机数,然后随机数n作为执行这段代码逻辑的输入参数;之后返回n

如果要一个无参数的代码段逻辑,如下这么写就可以:

fun numberPrinter(s: () -> Double){
    println(s())
}

函数作为参数在项目中的使用场景:需要在原来的多个函数执行逻辑前后加一部分逻辑;

比如原来有个函数

fun f1(){
xxxx
xxx
xx
}

现在需要在f1函数执行前之后加一些逻辑,在最后再加一些逻辑,如果手工添加的话,这样的地方太多,另外还很可能会漏掉,比如只在开头加了一段逻辑,结尾忘记了;可以定义一个方法,

fun main() {
   f2 { f1() }
}

fun f2(c: () -> Unit) {
    println("执行方法之前添加逻辑")
    c()
    println("执行方法后添加逻辑")
}

fun f1(){
    println("原来的逻辑")
}

执行结果输出:

执行方法之前添加逻辑
原来的逻辑
执行方法后添加逻辑

2.Java中使用

java中要区分几种情况:
Function<T,R>?? ?接受一个输入参数,返回一个结果

public static void main(String[] args) {
        String a="1123";
        f1(b ->{
            return b+"1";
        },a);
    }

    static void f1(Function<String,String> f2,String a){
        String result = f2.apply(a);
        System.out.println(result);
    }


Supplier?? ?无参数,返回一个结果,调用的时候()-> {xxx;return a;}
Consumer?? ?接受一个输入参数,并且不返回任何结果

Runnable 无参数,无返回结果
BiFunction<T,U,R>?? ?接受两个输入参数的方法,并且返回一个结果
BiConsumer<T,U>?? ?接受两个输入参数的操作,并且不返回任何结果

其他类似

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:01:50  更:2022-01-01 14:02:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:59:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码