函数式编程之lambda

函数式编程

在js、python等脚本语言中经常可以看到已函数作为变量来传递的用法,这种方法使得程序多是在创建函数、或创建函数(运行)的路上。更甚至一些简单的方法完全不需要调用(引入)库就可以用简单的几行代码来解决,可以使得程序专注于做某件事而不被外部因素影响,这个特点使得在多线程时不易出现问题。

从一定程度上来说可以简化代码,且思路清晰(代码段集中)。但是不恰当的使用也会导致代码冗余、复杂。

以lambda函数为例,用他来作为简单的函数逻辑是不错的选择

a = 233
fn = lambda x: return x * 3 -5
def func2(param, fn):
    print(param)
    return fn(param)
fn2 = func2
fn(a)
fn2(a, fn)

从python的几行代码可以诠释函数式编程的优势,合理的使用的确可以减少不少代码,同时函数作为变量也使得代码编写更加灵活多变,至于更深层次的优缺点还需慢慢探究

lambda

在jdk1.8中迎来了新的变革,引入了lambda及一些列接口支持函数式编程

public static boolean vali(String data, Function<String, Boolean> fc) {
    returnfc.apply(data)
}

public static void show(String data, Consumer<String> consumer) {
    consumer.accept(data);
}

public static boolean check(String data, Predicate<String> predicate) {
    return predicate.test(data);
}

public static void main(String[] args) {
    vali("aa", input -> {
        System.out.println(input);
        return input != null && input.trim().length() > 0;
    });
}

  1. Function<T, R>, 调用apply方法,有输入输出
  2. Consumer<T>, 调用accept方法,有输入无输出
  3. Predicate<T>, 调用test方法,有输入返回条件判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值