美文网首页
10,插播 java8-λ,引出currying

10,插播 java8-λ,引出currying

作者: r8HZGEmq | 来源:发表于2020-06-11 12:11 被阅读0次
    java 8:
    闭包,允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理
    
    
     public class Java8Tester {
        public static void main(String[]args){
            MathOperation addition = (int a, int b) -> a + b;
            MathOperation subtraction = (int a, int b) -> a - b;
    
            Java8Tester java8 = new Java8Tester();
    
            int res1 = java8.operation(1, 2, addition);
            int res2 = java8.operation(1, 2, subtraction);
            System.out.println("-----> : " + res1);
            System.out.println("-----> : " + res2);
    
        }
        interface MathOperation{
            int operation(int a, int b);
        }
        int operation(int a, int b, MathOperation operater) {
            return operater.operation(a, b);// 这两个参数,传递给实现函数
        }
    }
    
    java8 lambda的语法糖
    currying将一系列多参数,改成单参数的形式
    柯里化棒在哪里。(1,提高性能吗?no   2,模块化?yes)
    let add = function(a, b){return a+b} // 参数传多了会被忽略,传少了会报NaN
    
    
    任何新技术的引出,必定是为了解决一个现有的问题
    调用SDK里的api1('id',p2,p3), api2('id',p4,p5), api3('id','sn',p6,p7)
    抽象为:
    1,将需要调用的api(一个函数)作为第1个参数传入
    2,然后固定住部分不变的参数
    3,然后返回新的函数
    functionN(fn){
      return (x) -> {
        return (y) -> {
            fn(x, y, ....., N)
          }
      }
    }
    
    
    

    相关文章

      网友评论

          本文标题:10,插播 java8-λ,引出currying

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