美文网首页
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

  • Lambda Calculus

    Lambda 定义 例(py): (lambda x : x + x)(5)10Currying 例: (lamb...

  • 函数的柯里化和反柯里化

    一 柯里化(currying) 柯里化(currying)又称部分求值。一个currying的函数首先会接受一些参...

  • Currying

    介绍 Methods may define multiple parameter lists. When a me...

  • currying

    what's currying curry化就是把add(2,3)变成add(2)(3) 我们仔细看看这里发生了什...

  • Swift_currying(柯里化)

    一. Currying解释 currying 翻译为局部套用.又称为部分求值(Partial Evaluation...

  • Swift 进阶

    swift新元素 柯里化(Currying) Swift 里可以将方法进行柯里化(Currying),这是也就是把...

  • 插播

    #时光手帐# 我很喜欢记录各种各样的大事小事,我觉得手账很满足我的小兴趣,学了一堆的排版啊、胶带搭配啊等等,准备大...

  • 插播

    做精油开背+拔罐(一定要把房间收拾一下,再让顾客进去,记得打开空调。 精油开背(放三张一次性纸巾)) 一定要计时 ...

  • Swift Currying

    本博客主要是对下面博客的翻译:https://robots.thoughtbot.com/introduction...

网友评论

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

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