首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏张家辉的树屋

    JavaScript: 函数编程 - 声明函数

    了解JavaScript函数编程目录 0-了解 JavaScript 函数编程 - 什么是纯函数 1-了解 JavaScript 函数编程 - 柯里化 2-了解 JavaScript 函数编程 - 代码组合的优势 3-了解 JavaScript 函数编程 - 声明函数 4-了解 JavaScript 函数编程 - 类型签名 声明 声明代码 什么是声明,我们将不再指示计算机如何工作 声明最重要的是不是指定执行顺序,所以它天然的适合进行并行运算。它和纯函数一起解释了为何函数编程是未来并行计算的一个不错的选择 -- 我们真的不需要做什么就能现实一个并行/并发系统。 所以我们需要纯函数和声明函数来隔离这种无用的错误。 为什么使用声明方式的函数函数? 在纯函数中,我们总是能保证我们的输出。 低复杂度,我们只需要考虑的是他是做什么的,而不是在乎过程怎么完成的。 易于测试,我们不用依赖于函数的状态,我们只关心结果的验证。 函数编程更加易于理解。 总结 声明和命令的区别和含义,这里我们可以结合上一篇文章 组合代码 相关知识。

    1.8K30发布于 2021-02-02
  • 来自专栏劝学

    函数编程】-纯函数

    函数是什么 函数,不依赖执行的上下文,也不影响上下文的变量,输出只由输入决定 看下几个不是纯函数的例子 输出依赖外部变量 let b = 1 function unPure(a) { return b } 复制代码 输出改变外部变量 let o = {} function unPure(object) { object.ex = 1 return object } 复制代码 纯函数的例子 有个什么用呢 function pure(a) { let b = 1 return a + b } 复制代码 纯函数的好处 更有利于单元测试 无副作用(side-effect),不会修改作用域外的值 = 'pending') { return {...options, {foo: 'baz'}} } } } 优化后的代码 // 使two抽离出来,成为纯函数 额外地说一下,使用纯函数与面向对象编程并无冲突。

    77810发布于 2021-01-21
  • 来自专栏全栈程序员必看

    java函数编程实例(函数编程实例)

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128794.html原文链接:https://javaforall.cn

    1.5K10编辑于 2022-07-28
  • 来自专栏用户9199536的专栏

    Python|函数编程|类的函数实现

    本文参考SICP,Function Abstraction python作为一个现代语言,结合着OOP和FP的多种性质,不同于其他OOP语言,python中的函数具有自己的环境,让我们从这里入手,看看类在 函数,闭包,其内部名称只可被内部访问,因此,本质上,它可以视为大部分成员都是私有的对象。 那么,函数有什么是public的呢,答案是,返回值,这是函数与外界沟通的桥梁.

    70830发布于 2021-11-22
  • 来自专栏Android 开发者

    函数 Java 到函数 Kotlin 的转换

    目的是为创建一个带有非默认方法的接口,这样这个接口就可以将函数模拟成面向对象语言中的一等公民。 回调在函数接口中很常见。想象一下下面的场景,我们想要进行一些异步操作,稍后将结果返回给调用的客户端。 在构造函数中把接口转换为函数后,@FunctionalInterface 部分的样板代码从 96 个字符减少到 38 个字符,这可是减少了 40%。

    1.6K50发布于 2018-05-31
  • 来自专栏烟草的香味

    函数编程

    当然, 对函数编程也有所耳闻, 但也仅仅是有所耳闻, 从来没有上手写过. 最近没事的时候就找些资料看看, 同时也尝试自己写一些函数编程思想的代码. 以下简单总结一下我最近对函数编程的体验. 最开始, 我以为将面向对象中的类为基本单位, 换成函数为基本单位, 就是函数编程了, 结果发现, 这只能说明我还是在使用面向对象的思想. 那么什么是函数编程呢? 看到函数这个名字, 最先想到的就是初中的数学了: f(x)=2x. 这是一个一元一次函数. 针对我对于函数编程的使用来看, 总结函数编程的几个特点, 可能并不全面: 管道操作. 可以将数据通过依次流过各个管道, 将各种简单的操作整合为一个复杂的操作. 将函数作为头等对象 延迟处理. 此外, 函数编程不止以上内容, 这段时间只是简单的尝试

    1.4K30发布于 2021-04-28
  • 来自专栏我杨某人的青春满是悔恨

    函数思维

    自从大四看了三章《SICP》之后我就自诩为一个函数编程爱好者,之前也在公司分享过一个 Haskell 的 Topic,效果非常糟糕,讲到后来已经没剩几个人了,只得草草收场。 emm.jpeg 今天我们就讲点简单的吧,举个例子大概感受下函数思维。 一道题 电话号码的字母组合 今天备战双十一,因为也没太多事情,就随便刷刷 leet code,看到了上题。 本文就是浅显地展示一下函数编程的感觉,它可能是从更高层更抽象的角度出发,尽量不涉及中间状态,也不过早地沉入细节,而是理清思路之后通过函数间的组合来解决问题。 真正的纯函数语言(Haskell)是没有副作用的(或者说隐藏了副作用),而真实的世界却充满副作用,为了能够正常工作并且保持自己的纯粹,它引入了范畴论中的各种概念,很有意思但确实有比较高的门槛,而且那些复杂的理论学了平常用不到很快就忘了 但函数的思维,却是可以成为一种习惯,融入日常开发中的。

    54710发布于 2018-12-11
  • 来自专栏weixuqin 的专栏

    函数接口

    函数接口 1. 函数接口定义 一个接口有且只有一个抽象方法。 函数接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建。 注意: 如果一个接口只有一个抽象方法,那么该接口就是一个函数接口 如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数接口的定义来要求该接口 函数接口应满足 如果某个接口只有一个抽象方法,但我们并没有给该接口声明 @FunctionalInterface 注解,那么编译器依旧会将该接口看作是函数接口 重写 Object 类里的方法不会导致函数接口失效 ​ 如果一个接口声明了抽象方法,但该抽象方法重写了 Object 类里的一个公有方法,那么对于 Java 编译器来说,它并不会认为该方法符合函数接口的抽象方法(即不把该方法当作函数接口的抽象方法)。 因为接口的实现类都会直接或间接继承 Object 这个根类,所以在函数接口中定义与 Object 类中签名一样的方法是不会导致函数接口失效的。

    72120发布于 2019-09-10
  • 来自专栏D·技术专栏

    函数编程

    什么是函数编程 函数编程是一种编程范式,是一种如何编写程序的方法论。 举个简单例子: int a =10; int b = 15; int c = 2; int sum = a + b; int quadrature = sum * c; 这样的方式属于命令编程,关心的是解决问题的步骤 函数编程 Math.multiplyExact(Math.addExact(a,b),c); 特点: 函数是“一等公民” 函数是和其他数据类型一样可以赋值给变量,可以作为方法参数,返回值。 没有副作用 不修改状态 引用透明 优点: 1、减少键盘的开销 2、便于理解 —— 例如:merge([1,2],[3,4]).sort().search("2") 3、方便单元测试 ——针对函数不涉及外部状态变化 4、不用考虑死锁的问题 —— 不修改变量 Java8 新增的函数接口 分四种: 先看下源码的介绍 Function 接收一个T类型参数,返回R类型。

    1.1K11发布于 2019-12-23
  • 来自专栏Web 技术

    【基于JS 函数编程 -1】什么是函数编程 | 纯函数 | 命令与声明 | 优点

    什么是函数编程 引入 概念 我们知道,在数学中,函数可以有如下形式: f(X) = Y ,即一个函数f ,以X作参数,返回输出结果Y。 ,函数编程是一种范式,其能够创建仅依赖输入就可以完成自身逻辑的函数。 因为,具有引用透明性的函数,只能依赖来自参数的输入,我们可以轻松地用多线程运行这样的代码,没有任何锁机制。 编程范式之 命令 与 声明 首先我们要理解什么是命令,什么是声明。 如何做的部分,将被抽象到普通函数(也称”高阶函数,如forEach()“)中。如下代码,我们使用声明方式改写上面的命令代码。 函数编程的优点 纯函数 大多数函数编程的好处来自编写纯函数。 定义: 对给定的输入返回相同的输出的函数

    53610编辑于 2023-10-07
  • 来自专栏房东的猫

    函数接口

    简介 所谓的函数接口,实际上就是接口里面只能有一个抽象方法的接口。Comparator接口就是一个典型的函数接口,它只有一个抽象方法compare。 允许定义默认defalut非抽象方法(default方法也是java8才有的); 允许java.lang.Object中的public方法; FunctionInterface注解不是必须的,如果一个接口符合"函数接口 如果编写的不是函数接口,但是加上了@FunctionInterface,那么编译器会报错; 甚至可以说:函数接口是专门为lambda表达式准备的,lambda表达式是只实现接口中唯一的抽象方法的匿名实现类 JDK中的函数接口举例: java.lang.Runnable, java.util.Comparator, java.util.concurrent.Callable java.util.function 包下的接口,如Consumer、Predicate、Supplier等 函数接口 默认方法通过实例调用;静态方法通过接口名调用。

    91610发布于 2021-08-15
  • 来自专栏全栈程序员必看

    函数接口

    函数接口的概念&定义 package com.itheima.demo1.FunctionalInterface; /* 函数接口:有且只有一个抽象方法的接口,称之为函数接口 当然接口中可以包含其他的方法 (默认,静态,私有) @FunctionalInterface注解 作用:可以检测接口是否是一个函数接口 是:编译成功 否:编译失败(接口中没有抽象方法抽象方法的个数多余1个) */ @FunctionalInterface public interface MyFunctionalInterface { //定义一个抽象方法 public abstract void method(); } 函数接口的使用 package com.itheima.demo1.FunctionalInterface; /* 函数接口的使用:一般可以作为方法的参数和返回值类型 */ public class Demo { //定义一个方法,参数使用函数接口MyFunctionalInterface public static void show(MyFunctionalInterface myInter

    75520发布于 2021-05-20
  • 函数接口

    1、函数接口的概念函数接口在java中是指:有且仅有一个抽象方法的接口,当然接口中也可以包含其他的方法(默认,静态,私有)。 函数接口的定义:csharp 体验AI代码助手 代码解读复制代码@FunctionalInterfacepublic interface MyFunctionalInterface { //定义一个抽象方法 @FunctionalInterface可以检测接口是否为函数接口(是编译成功;否编译失败-接口中没有抽象方法或抽象方法个数多于一个)。 MessageBuilder中的方法, * 才会进行字符串的拼接 */ showLog(1, ()-> msg1 + msg2 + msg3); }}2.3、函数接口作为函数的参数案例假设有一个 可以传递lambda表达式 startThread(()-> System.out.println(Thread.currentThread().getName())); }}2.4、函数接口作为函数的返回值案例如果一个方法的返回值类型是一个函数接口

    33910编辑于 2025-06-18
  • 来自专栏四火的唠叨

    函数编程

    函数编程已经有比较长的历史了,如今的动态语言,很大程度上也受到了函数编程(反过来名叫命令编程)的启发。 在函数编程语言中,当你写了一个函数,接受一些参数,那么当你调用这个函数时,影响函数调用的只可能是你传进去的参数,而你得到的也只能够是计算结果。因此,一个 void 的方法,是没有任何意义的。 在函数编程中访问状态是十分安全的,因为状态不会改变,我可以把一个 Point 或 List 对象交给任意多的地方去访问,完全不用担心副作用。 函数编程的十分容易并行,因为我在运行时不会修改状态,因此无论多少线程在运行时都可以观察到正确的状态。两个函数完全无关,因此它们是并行还是顺序地执行便没有什么区别了。 我们还可以有延迟计算,可以进行 Memorization,经常使用递归作为控制流,这些都是函数编程中十分有趣的方面。

    92711编辑于 2022-07-15
  • 来自专栏前端学习文档

    函数编程

    source=cloudtencent 什么是函数编程? 函数编程(Functional Programming, FP)就是利用纯函数实现细粒度的函数,然后再通过函数的组合把细粒度的函数组合成功能更强大的函数函数编程中的 "函数" 不是程序中的函数(方法),而是数学中的函数(映射关系),例如 y=sin(x) 中 x 和 y 的关系,函数编程用来描述数据之间的映射。 函数编程 把现实世界中的事物和事物之间的联系抽象到程序世界,对运算过程进行抽象。 基础案例 非函数编程 const num1 = 2 const num2 = 3 const sum = num1 + num2 函数编程 function add(num1, num2) {

    62901编辑于 2023-05-30
  • 来自专栏秋落雨微凉Java开发栏

    函数接口

    函数接口 函数接口:有且仅有一个抽象方法的接口 Java中的函数编程体现就是Lambda表达式,所以函数接口就是用于Lambda使用的接口 只有确保接口中有且仅有一个抽象方法,Java中的Lambda 才能顺利推导 如何检验接口是否是函数接口: @FunctionalIneterface 放于接口的上方:如果接口是函数接口,编译通过;如果不是,编译失败 下面给出示例代码: public class args) { //我们采用lambda方法来创建接口对象 MyInterface my = () -> { System.out.println("函数接口 "); }; //直接调用方法,方法是由lambda标注的 my.show(); } } //函数接口标记 @FunctionalInterface (Runnable r):方法参数是Runnable函数接口 main():调用startThread方法 下面给出代码示例: public class RunnableDemo { public

    56510编辑于 2022-10-25
  • 来自专栏IT开发技术与工作效率

    Java 8 函数编程Java 8 函数编程

    Java 8 函数编程 java.util.function.* @FunctionalInterface 都是函数接口,没有成员(状态) 高阶函数:参数或返回值为函数 方法引用:类名::方法名 可以 类名::new、String[]::new 流操作 Stream.of("-1", "0", "1") // 生成 .map(函数) // 映射 .filter(返回布尔值函数) // 过滤器 (重构:找for中if) .flatMap(函数) // 平面映射:多个流合并 .min(Comparator.comparing(x -> x.getLength())) .reduce(0, (a, b) -> a+b); // 缩小 a一开始是第一个参数0,b是不断传入的流元素, 这个式子的功能是求和, 可以用Integer的sum函数替代第二个式子, 写成.reduce(0, Integer 返回类型 接口方法: Supplier supplier(); // 供应器:创建容器 BiConsumer<A, T> accumulator(); // 累加器:类似reduce的第二参数(函数

    1.5K30发布于 2018-09-29
  • 来自专栏姚红专栏

    python函数编程-匿名函数

    >> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 关键字lambda表示匿名函数 ,冒号前面的x表示函数参数。 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。

    48720发布于 2019-09-11
  • 来自专栏姚红专栏

    python函数编程-偏向函数

    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。 ),返回一个新的函数,调用这个新函数会更简单。 注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值: >>> int2('1000000', base=10) 1000000 最后,创建偏函数时,实际上可以接收函数对象 小结 当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

    54220发布于 2019-09-11
  • 来自专栏全栈程序员必看

    java函数编程Function(java函数编程实战)

    JAVA函数编程 背景 常见的编程范式 函数编程的优劣 JAVA8中为函数编程引入的变化 JAVA函数编程可以简单概括 基本函数 Lambda表达式 方法引用 Stream流API 创建操作 中间操作 比如时下潮流前沿spring framework5中的响应编程就是使用到了函数编程的风格。 代表语言有:SQL,HTML,CSS 函数编程:函数编程将函数作为编程中的“一等公民”,关注于流程而非具体实现。可以将函数作为参数或返回值。所有数据的操作都通过函数来实现。可以理解为数学中的函数。 缺点: 由于函数内数据不变原则,导致的资源占用 调试上相对于命令的困难 JAVA8中为函数编程引入的变化 函数接口,函数接口中只能有一个抽象方法 @FunctionInterface,这也是为了函数调用时避免带来二义性 被default修饰的方法–默认实现 JAVA函数编程可以简单概括 lambda + 方法引用 + stream API = java函数编程 基本函数 以上是在函数编程中的基本函数模型,我们大可以将其与数学函数做关联

    2.5K50编辑于 2022-08-02
领券