flutter、kotlin、java中将方法作为入参的区别

1、带参数带返回值的方法作为入参

(1)flutter

  • 定义
int add(int a, int b) => a + b;
int subtract(a, b) => a - b;

performOperation(int a, int b, int Function(int, int) function) => function(a, b);

// //简化写法
// add(a, b) => a + b;
// subtract(a, b) => a - b;
// performOperation(a, b, function) => function(a, b);
  • 使用
void main() {
  var res11 = performOperation(1, 2, add);
  var res12 = performOperation(1, 2, (a, b) => a + b);
  var res21 = performOperation(1, 2, subtract);
  var res22 = performOperation(1, 2, (a, b) => a - b);

  print("res11: $res11");
  print("res12: $res12");
  print("res21: $res21");
  print("res22: $res22");
}

(2)kotlin

  • 定义
fun add(a: Int, b: Int) = a + b
fun subtract(a: Int, b: Int) = a - b

fun performOperation(a: Int, b: Int, action: (Int, Int) -> Int) = action(a, b)
  • 使用
fun main() {
    val res11 = performOperation(1, 2, ::add)
    val res12 = performOperation(1, 2, action = { a: Int, b: Int -> a + b })
    val res21 = performOperation(1, 2, ::subtract)
    val res22 = performOperation(1, 2, action = { a: Int, b: Int -> a - b })

    println("res11: $res11")
    println("res12: $res12")
    println("res21: $res21")
    println("res22: $res22")
}

(3)java

  • 定义
public class Test {

    int add(int a, int b) {
        return a + b;
    }

    int subtract(int a, int b) {
        return a - b;
    }


    int performOperation(int a, int b, BiFunction<Integer, Integer, Integer> action) {
        return action.apply(a, b);
    }
 }
  • 使用
public class Test {
    int add(int a, int b) {
        return a + b;
    }

    int subtract(int a, int b) {
        return a - b;
    }


    int performOperation(int a, int b, BiFunction<Integer, Integer, Integer> action) {
        return action.apply(a, b);
    }

    void main(Test test) {
        int res11 = performOperation(1, 2, test::add);
        int res12 = performOperation(1, 2, (a, b) -> a + b);
        int res21 = performOperation(1, 2, test::subtract);
        int res22 = performOperation(1, 2, (a, b) -> a - b);
    }
}

2、带参数不带返回值的方法作为入参

(1)flutter

  • 定义
equals(int a, int b, Function(bool) callback) {
  if (a == b) {
    callback(true);
  } else {
    callback(false);
  }
}

// //简化写法
// equals(a, b, callback) {
//   if (a == b) {
//     callback(true);
//   } else {
//     callback(false);
//   }
// }
  • 使用
void main() {

  equals(2, 5, (value) => {
        if (value){
            //相等
            print("res3: 相等")
        }else{
            //不相等
            print("res3: 不相等")
        }
      }
  );
}

(2)kotlin

  • 定义
fun equals(a: Int, b: Int, callback: (Boolean) -> Unit) {
    if (a == b) {
        callback(true)
    } else {
        callback(false)
    }
}
  • 使用
fun main() {
    equals(1, 2, callback = { value ->
        if (value) {
            println("相等")
        } else {
            println("不相等")
        }
    })
}

(3)java

  • 定义
public class Test {

    void equals(int a, int b, Function<Boolean, Void> callback) {
        if (a == b) {
            callback.apply(true);
        } else {
            callback.apply(false);
        }
    }
}
  • 使用
public class Test {

    void equals(int a, int b, Function<Boolean, Void> callback) {
        if (a == b) {
            callback.apply(true);
        } else {
            callback.apply(false);
        }
    }


    void main() {

        equals(1, 2, (value) -> {
            if (value) {
                System.out.println("相等");
            } else {
                System.out.println("不相等");
            }
            return null;
        });
    }
}

3、不带参数不带返回值的方法作为入参

(1)flutter

checkOddNumber(int num, Function() oddCallback, Function() evenCallback) {
  if (num % 2 == 1) {
    //奇数
    oddCallback();
  } else {
    //偶数
    evenCallback();
  }
}

// //简化写法
// checkOddNumber(num, oddCallback, evenCallback) {
//   if (num % 2 == 1) {
//     oddCallback();
//   } else {
//     evenCallback();
//   }
// }
  • 使用
void main() {

  checkOddNumber(3, () => {print("res4: 奇数")}, () => {print("res4: 偶数")});
}

(2)kotlin

  • 定义
fun checkOddNumber(num: Int, oddCallback: () -> Unit, evenCallback: () -> Unit) {
    if (num % 2 == 1) {
        oddCallback()
    } else {
        evenCallback()
    }
}
  • 使用
fun main() {

    checkOddNumber(1,
        oddCallback = {
            println("奇数")
        },
        evenCallback = {
            println("偶数")
        })
}

(3)java

  • 定义
public class Test {

    void checkOddNumber(int num, Function<Void, Void> oddCallback, Function<Void, Void> evenCallback) {
        if (num % 2 == 1) {
            oddCallback.apply(null);
        } else {
            evenCallback.apply(null);
        }
    }
}
  • 使用
public class Test {

    void checkOddNumber(int num, Function<Void, Void> oddCallback, Function<Void, Void> evenCallback) {
        if (num % 2 == 1) {
            oddCallback.apply(null);
        } else {
            evenCallback.apply(null);
        }
    }

    void main() {

        checkOddNumber(1, (t1) -> {
            System.out.println("奇数");
            return null;
        }, (t2) -> {
            System.out.println("偶数");
            return null;
        });
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/584116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【知识学习/复习】损失函数篇,包含理解应用与分类:回归、分类、排序、生成等任务

损失函数总结 一、损失函数理解二、不同任务的损失函数的应用1.图像分类2.目标检测3.语义分割4.自然语言处理&#xff08;NLP&#xff09;5.图神经网络&#xff08;GNN&#xff09;6.生成式网络 三、损失函数1. 回归任务损失函数常见损失函数IoU系列损失函数1. IoU损失函数&…

微信开发api、微信视频号开发

接口地址&#xff1a; http://api.videostui.com/finder/v2/api/login/checkLogin 接口说明 获取到登录二维码后需每间隔5s调用本接口来判断是否登录成功新设备登录平台&#xff0c;次日凌晨会掉线一次&#xff0c;重新登录时需调用获取二维码且传appId取码&#xff0c;登录成…

Outlook邮箱如何撤回一封已发送邮件?~网页版上

点【已发送邮件】 双击要撤回的已发送的那个邮件 点【…】 点击【撤回消息】 点【确定】 结束&#xff01;

使用LocalGPT+cpolar打造可远程访问的本地私有类chatgpt服务

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问&#xff0c;由于localGPT只能通过本地局域网IP地址端口号的形式访问&#xff0c;实现远程访问…

【源代码】使用Vision Pro远程操控机器人

1、OpenTeleVision 是一个开源项目&#xff0c;提供远程操作功能 2、可以从 VisionPro 或 Meta Quest 3 中流式传输头部、手部和腕部数据 3、可以将实时立体视频从摄像头流式传输到 VR 设备 4、需要在 Ubuntu 机器上安装 Zed SDK 和 mkcert&#xff0c;以便在本地进行测试 …

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上&#xff0c;英伟达引领行业风向&#xff0c;宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现 摘要&#xff1a; 随着汽车电子技术的快速发展&#xff0c;车辆状态实时监控系统的需求日益增长。本文设计并实现了一种基于STM32单片机的汽车胎压、速度及状态监测系统。该系统能够实时监测汽车的胎压、速度以及其他…

算法设计与分析4.1 迷宫问题 栈与队列解法、打印矩阵、三壶问题、蛮力匹配

1.ROSE矩阵 实现&#xff1a; 使用算法2 分析&#xff1a; 每半圈元素值的增长规律变换一次 设增量为t&#xff0c;每半圈变换一次t <— -t . 设矩阵边长为i&#xff0c;每半圈的元素个数是2*(i-1)个&#xff0c;hc为记数变量&#xff0c;则1≤hc<2i-1&#xff0c;前1/…

ChatGLM2-6B的部署步骤_A3

ChatGLM2-6B 下载地址 一、VisualGLM-6B环境安装 1、硬件配置 操作系统&#xff1a;Ubuntu_64&#xff08;ubuntu22.04.3&#xff09; GPU&#xff1a;4050 显存&#xff1a;16G 2、配置环境 建议最好自己新建一个conda环境 conda create -n chatglm2 python3.8pip …

【go项目01_学习记录day01】

博客系统 1 vscode开发go项目插件推荐1.1 CtrlShiftP&#xff08;俗称万能键&#xff09; &#xff1a;打开命令面板。在打开的输入框内&#xff0c;可以输入任何命令。1.2 开发时&#xff0c;我们需要经常查阅 Go 语言官方文档&#xff0c;可惜因国内访问外网不稳定&#xff0…

STM32开启停止模式,用外部中断唤醒程序运行

今天学习了一下STM32的停止模式&#xff0c;停止模式下&#xff0c;所有外设的时钟和CPU的电源都会被关闭&#xff0c;所以会很省电&#xff0c;打破这种停止模式的方式就是外部中断可以唤醒停止模式。要想实现这个功能&#xff0c;其实设置很简单的&#xff0c;总共就需要两步…

《C语言深度解剖》(10):数组指针、指针数组和数组指针数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》《精通C指针》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏…

情感类ppt素材

小清新手绘插画风毕业季毕业相册同学录画册纪念册PPT下载 - 觅知网这是一张关于清新毕业相册的PPT模板&#xff0c;清新风格设计&#xff0c;加上风为装饰元素&#xff0c;包含毕业相册、毕业季、毕业、同学、纪念等主题内容&#xff0c;也可用作毕业相册PPT、毕业季PPT、毕业P…

陪诊小程序:温情陪伴,就医无忧

在快节奏的现代生活中&#xff0c;健康问题时常困扰着我们。每当身体出现不适&#xff0c;前往医院就诊便成为了一项必要的任务。然而&#xff0c;面对陌生的医院环境、繁琐的就诊流程&#xff0c;许多人往往会感到无助和困惑。此时&#xff0c;一款贴心的陪诊小程序便显得尤为…

国内首个图计算平台团体标准发布,创邻科技参与编撰

2024年&#xff0c;由中国通信标准协会批准的团体标准《大数据 图计算平台技术要求与测试方法》&#xff08;编号&#xff1a;T/CCSA 470—2023&#xff09;&#xff08;下称&#xff1a;标准&#xff09;正式实施。该标准于1月4日在全国团体标准信息平台&#xff08;https://w…

AI系列:大语言模型的RAG(检索增强生成)技术(上)

前言 大型语言模型&#xff08;LLM&#xff09;虽然在生成文本方面表现出色&#xff0c;但仍然存在一些局限性&#xff1a;数据是静态的&#xff0c;而且缺乏垂直细分领域的知识。为了克服这些限制&#xff0c;有时候会进行进一步的模型训练和微调。在实际应用中&#xff0c;我…

在Android中,如何通过Kotlin协程处理多个API调用

在Android中&#xff0c;如何通过Kotlin协程处理多个API调用 在Android开发中&#xff0c;如何使用Kotlin协程处理多个API调用的示例呢&#xff1f;假设我们已经对Kotlin协程有了一定的了解&#xff0c;包括定义、简单用例和示例等。现在&#xff0c;让我们来看一些真实的Andr…

如何下载钉钉群直播回放:完整步骤解析

在当今快节奏的商业和教育环境中&#xff0c;钉钉群直播已经成为了沟通和学习的重要工具。直播结束后&#xff0c;很多观众都希望回顾内容&#xff0c;但却不知如何开始。如果你错过了实时直播&#xff0c;或者只是想再次观看精彩的演讲和讨论&#xff0c;那么下载钉钉群直播回…

常见的数据结构,附带图解

概述 数据结构是指计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。 常见数据结构&#xff1a;栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树... 栈 后进先出、先进后出 队列 先进先出&#xff0c;后进后出 数组 查询速度快…

Spark01 —— Spark基础

文章目录 Spark01 —— Spark基础一、为什么选择Spark&#xff1f;1.1 MapReduce编程模型的局限性1.2 Spark与MR的区别1.3 版本1.4 优势1.5 Spark其他知识1、多种运行模式2、技术栈3、spark-shell&#xff1a;Spark自带的交互式工具4、Spark服务 二、Spark的基础配置三、Spark实…
最新文章