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

ops/2024/9/23 7:24:11/

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

flutter_3">(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");
}

kotlin_37">(2)kotlin

  • 定义
kotlin">fun add(a: Int, b: Int) = a + b
fun subtract(a: Int, b: Int) = a - bfun performOperation(a: Int, b: Int, action: (Int, Int) -> Int) = action(a, b)
  • 使用
kotlin">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")
}

java_65">(3)java

  • 定义
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);}}
  • 使用
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);}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、带参数不带返回值的方法作为入参

flutter_119">(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: 不相等")}});
}

kotlin_162">(2)kotlin

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

java_193">(3)java

  • 定义
java">public class Test {void equals(int a, int b, Function<Boolean, Void> callback) {if (a == b) {callback.apply(true);} else {callback.apply(false);}}
}
  • 使用
java">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、不带参数不带返回值的方法作为入参

flutter_245">(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: 偶数")});
}

kotlin_279">(2)kotlin

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

java_309">(3)java

  • 定义
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);}}
}
  • 使用
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);}}void main() {checkOddNumber(1, (t1) -> {System.out.println("奇数");return null;}, (t2) -> {System.out.println("偶数");return null;});}
}

http://www.ppmy.cn/ops/30245.html

相关文章

旅游新策略,共享与补贴助力地方经济繁荣

在当前的经济环境中&#xff0c;旅游业对于地方经济增长的重要性日益凸显。各个城市都在积极探索增加旅游流量的方法&#xff0c;以刺激本地经济的增长。 例如&#xff0c;淄博政府通过政策推动和合作模式&#xff0c;成功吸引了大量游客&#xff0c;这成为了一个成功的案例。…

西电大数据安全与隐私(现代密码学基础技能)

西电大数据安全与隐私(现代密码学基础技能) 大数据安全与隐私这门课的lab1,要求如下图: 采用的方案是RSA和AES相结合, 利用RSA来加密传输AES的密钥, 用AES的密钥来加密数据. 如果使用RSA加密数据, 虽然安全性会更高, 但效率低. AES加解密效率高, 但安全性会差一些, 所以采用RS…

SpringBoot使用git-commit-id-maven-plugin打包

简介 git-commit-id-maven-plugin 是一个maven 插件&#xff0c;用来在打包的时候将git-commit 信息打进jar中。 这样做的好处是可以将发布的某版本和对应的代码关联起来&#xff0c;方便查阅和线上项目的维护。至于它的作用&#xff0c;用官方说法&#xff0c;这个功能对于大…

《原则》生活和工作 - 三余书屋 3ysw.net

原则&#xff1a;生活和工作 您好&#xff0c;今天我们解读的书是《原则&#xff1a;生活和工作》。这本书和我们之前解读过的《原则&#xff1a;应对变化中的世界秩序》是同一个作者写的。那本书的主题非常宏大&#xff0c;它讨论的是世界运行的原则。而今天我们聊的《原则&a…

selenium 4.x 之验证码处理(python)

验证码处理 一般情况公司如果涉及web自动化测试需要对验证码进行处理的方式一般有一下几种&#xff1a; 关闭验证码功能&#xff08;开发处理&#xff09;设置万能验证码&#xff08;开发处理&#xff09;使用智能识别库进行验证 通过第三方打码平台识别验证码 1. 跳过验证功…

php使用Canal监听msyql

canal需要java8 去官网下载java8 安装JAVA #创建目录 mkdir -p /usr/local/java/ #解压到目录 tar zxvf jdk-8u411-linux-x64.tar.gz -C /usr/local/java/配置环境变量在 /etc/profile 最后加入 export JAVA_HOME/usr/local/java/jdk1.8.0_411 export CLASSPATH.:$JAVA_HOM…

C++ stack和queue的使用方法与模拟实现

文章目录 一、 stack的使用方法二、 queue的使用方法三、 容器适配器四、 stack的模拟实现五、 queue的模拟实现 一、 stack的使用方法 stack介绍文档 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的…

Python中覆盖类属性最好的方法

Python中有一个很独特的功能,类属性可为实例属性提供默认值。下面Person类中有一个名为current_year的类属性。compute_age方法中用到了这个属性,而且都故意使用self.current_year读取它的值。因为Person本身没有current_year这个实例属性,所以self.current_year默认获取的是…