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

05-14 1465阅读

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 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 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 callback) {
                                if (a == b) {
                                    callback.apply(true);
                                } else {
                                    callback.apply(false);
                                }
                            }
                        }
                        
                        • 使用
                          public class Test {
                              void equals(int a, int b, Function 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 oddCallback, Function evenCallback) {
                                          if (num % 2 == 1) {
                                              oddCallback.apply(null);
                                          } else {
                                              evenCallback.apply(null);
                                          }
                                      }
                                  }
                                  
                                  • 使用
                                    public class Test {
                                        void checkOddNumber(int num, Function oddCallback, Function 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;
                                            });
                                        }
                                    }
                                    
                                    flutter、kotlin、java中将方法作为入参的区别
                                    (图片来源网络,侵删)
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]