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

    2. 函数编程

    上篇说 ReactiveX.io (官网)给的定义是,Rx是一个使用可观察数据流进行异步编程编程接口,ReactiveX结合了观察者模式、迭代器模式和函数编程的精华! 什么是 函数编程 Functional Programming 简单说 Functional Programming 核心思想就是做运算处理,并用 function 来思考问题,例如像以下的算数运算式 函数编程是一种编程范式,最主要的特征是,函数是第一等公民。 a + b; }; // 可以回传一个 function } 函数编程强调 function 要保持纯粹,只做运算并返回一个值,没有其他额外的行为。 函数编程好处 可读性高 [9, 4].concat([8, 7]) // 合并数组 .sort() // 排序 .filter(x => x > 5) // 过滤出大于 5

    41120发布于 2018-12-27
  • 来自专栏Golang开发

    Go语言核心编程(2)——函数

    注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 函数定义 首字母大小写决定函数在其他包的可见性,大写时其他包可见,小写时只有相同的包可以访问。 多个相邻的同类型的参数可以使用简写模式 不支持默认参数 不支持函数重载 实参与形参 Go 函数实参到形参的传递永远是值拷贝,即使是参数是指针也是值拷贝,传递给形参的是这个指针变量的副本, 二者指向同一地址 函数签名 函数签名也就是函数类型,一个函数的签名就是指函数定义首行去掉函数名、参数名和{ 两个函数类型相同的条件是:拥有相同的形参列表和返回值列表(列表元素的次序、个数和类型都相同),形参名可以不同 错误处理 Go 语言内置错误接口类型 error。 任何类型只要实现 Eηor() string 方法,都可以传递 eηor 接口类型变量。 Go 语言典型的错误处理方式是将 error 作为函数最后一个返回值 。 在调用函数 时 , 通过检测其返回的 error 值是否为 nil 来进行错误处理。

    1K20发布于 2019-05-29
  • 来自专栏运维开发王义杰

    Go函数编程和闭包

    函数编程编程范式中的一种,强调将计算过程描述为一系列的函数调用。它提倡不可变性,避免副作用,并且使函数成为一等公民。 尽管Go不是一种典型的函数编程语言,它却提供了一些函数编程的特性,包括但不限于函数作为一等公民以及闭包。这篇文章将专注于这两个方面,并且通过代码示例进行解释。 函数作为一等公民 在函数编程语言中,函数是一等公民。这意味着函数可以被作为参数传递,作为返回值,或者被赋值给一个变量。Go语言支持这些特性。 即使createCounter函数已经返回,闭包仍然可以访问和修改count变量。 结论 尽管Go不是一种典型的函数编程语言,它仍然提供了一些函数编程的特性,包括函数作为一等公民和闭包。 这些特性使得Go在处理某些问题时,可以采用函数编程的方法,提供代码的简洁性和表达力。在实际使用Go进行开发时,根据实际情况合理利用这些特性,可以使代码更加简洁、灵活和强大。

    75020编辑于 2023-08-10
  • 来自专栏Go编程点滴

    Go编程模式 - 5.函数选项

    目录 一个常见的HTTP服务器 拆分可选配置 函数选项 更进一步 ServerConfig 我们先来看看一个常见的HTTP服务器的配置,它区分了2个必填参数与4个非必填参数 type ServerCfg string, port int, maxconns int, timeout time.Duration, tls *tls.Config) (*Server, error) {} SplitConfig 编程的一大重点 _ := NewServer("localhost", 9000, &conf) fmt.Println(srv1, srv2) } 到这里,其实已经满足大部分的开发需求了。 就是需要编写多个Option函数,代码量会有所增加。 如果大家对这个感兴趣,可以去看一下Rob Pike的这篇blog 。 首先,我们改造一下函数Option // 返回错误 type OptionWithError func(*Server) error 然后,我们改造一下其中两个函数作为示例 func Protocol

    37610发布于 2021-08-05
  • 来自专栏ai_houzi

    go语言基础8-函数编程

    概念 函数编程VS函数指针 函数是一等公民:参数、变量、返回值都可以是函数 高阶函数 函数->闭包

    97120发布于 2019-04-04
  • 来自专栏数据科学与人工智能

    【Python环境】Python函数编程指南(2):函数

    由于使用了函数体外定义的变量,看起来闭包似乎违反了函数风格的规则即不依赖外部状态。 现在,让我们试着用函数的风格重构一下。 请注意我们的目的是没有循环,使用函数替代循环是函数风格区别于指令风格的最显而易见的特征。 *像Python这样构建于类C语言之上的函数语言,由于语言本身提供了编写循环代码的能力,内置函数虽然提供函数编程的接口,但一般在内部还是使用循环实现的。 zip(iterable1, iterable2, …) 这个函数返回一个列表,每个元素都是一个元组,包含(iterable1[n], iterable2[n], …)。

    1K50发布于 2018-02-26
  • 来自专栏学院君的专栏

    Go 函数编程篇(三):匿名函数和闭包

    一、匿名函数的定义和使用 匿名函数是一种没有指定函数名的函数声明方式(与之相对的,有名字的函数被称为具名函数),在很多编程语言中都有实现和支持,比如 PHP、JavaScript(想想 Ajax 请求的实现 )等,Go 语言中也提供了对匿名函数的支持,并且形式上和其他语言类似: func(a, b int) int { return a + b } 和其他语言一样,Go 匿名函数也可以赋值给一个变量或者直接执行 支持闭包的语言都将函数作为第一类对象(firt-class object,有的地方也译作第一级对象、一等公民等,都是一个意思),Go 语言也不例外,这意味 Go 函数和普通 Go 数据类型(整型、字符串 注:所谓第一类对象指的是运行期可以被创建并作为参数传递给其他函数或赋值给变量的实体,在绝大多数语言中,数值和基本类型都是第一类对象,在支持闭包的编程语言中(比如 Go、PHP、JavaScript、Python 三、匿名函数的常见使用场景 下面我们来看几个 Go 匿名函数的典型使用场景。

    1K10编辑于 2023-03-03
  • Go语言中的函数编程实践探析

    1 前言函数编程Go 语言中有着独特的体现。Go 语言将函数视为“一等公民”,这意味着函数可以像其他数据类型一样被操作。 例如,可以将函数赋值给变量、作为参数传递给其他函数,也可以作为函数的返回值。高阶函数Go 函数编程的重要特性之一。高阶函数是指可以接收一个或多个函数作为参数,或者返回一个函数函数。 例如,我们可以定义一个函数,它接收另一个函数作为参数,对其进行操作后再返回一个新的函数。这种特性使得代码更加灵活和可复用。闭包也是 Go 函数编程的重要组成部分。 总的来说,Go 语言的函数编程特性为开发者提供了更多的编程选择和灵活性,使得代码更加简洁、易读、可维护。 总的来说,Go 函数编程为开发者提供了一种强大的编程工具,在合适的场景下能够极大地提高代码的质量和可维护性。

    49510编辑于 2024-09-28
  • 来自专栏Go 技术

    函数编程Go 中的优雅实践

    前言函数编程 (Functional Programming) 是一种注重函数和不可变数据的编程范式,在开发中有助于提高代码的可读性、模块化和可测试性。 尽管 Go 语言本身并不是为函数编程设计的,但它的灵活性和功能足以让我们以优雅的方式实现许多函数编程理念。本文将探讨函数编程的核心概念,并展示如何在 Go 中优雅地实践这些理念。 核心概念在深入代码之前,我们先了解几个函数编程的重要概念:纯函数 (Pure Function): 输出仅依赖输入参数,无副作用。 高阶函数Go函数类型和闭包支持让我们可以轻松实现高阶函数。 小结尽管 Go 不是一门严格的函数编程语言,但我们可以借助其灵活的语法实现许多函数编程的理念。这种实践不仅能提高代码的可读性,还能增强程序的模块化和稳定性。

    55833编辑于 2024-12-20
  • 来自专栏技术分享交流

    JavaScript专项算法题(2):函数编程

    问题: 构建一个addTwo函数,作用为接受一个参数并将参数加2。 console.log(addTwo(3)); console.log(addTwo(10)); 挑战2 addS 问题: 构建一个addS函数,作用为接受一个参数并将参数与“s”拼接。 map([1,2,3,4,5], multiplyByTwo); //-> [2,4,6,8,10] multiplyByTwo(1); //-> 2 multiplyByTwo(2); //-> 4 题解: // Challenge 11 const commutative = (func1, func2, value) => { if(func1(func2(value)) === func2(func1 console.log(addByTwo(2)); 挑战5 once 问题: 构建once函数,接受参数为一个回调函数并返回一个特定函数

    40130编辑于 2023-02-14
  • 来自专栏全栈程序员必看

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

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

    1.6K10编辑于 2022-07-28
  • 来自专栏学院君的专栏

    Go 函数编程篇(五):递归函数及性能调优

    一、递归函数及编写思路 很多编程语言都支持递归函数,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多个小问题,再各个击破,在实际开发过程中,某个问题满足以下条件就可以通过递归函数来解决 二、通过斐波那契数列求解演示 下面我们就以递归函数的经典示例 —— 斐波那契数列为例,演示如何通过 Go 语言基于上述归纳的思路编写递归函数来打印斐波那契数列。 具体细节我就不一一解释了,如果你理解了 Go 装饰器模式的实现,很容易理解这段代码。 尾递归优化是函数编程的重要特性之一,在了解尾递归优化前,我们先来看看什么是尾递归。 一些编程语言的编译器提供了对尾递归优化的支持,但是 Go 目前并不支持,为了使用尾递归优化技术,需要手动编写实现代码。

    77420编辑于 2023-03-03
  • 来自专栏烟草的香味

    函数编程

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

    1.4K30发布于 2021-04-28
  • 来自专栏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); 特点: 函数是“一等公民” 函数是和其他数据类型一样可以赋值给变量,可以作为方法参数,返回值。 3、方便单元测试 ——针对函数不涉及外部状态变化,参数固定返回结果也相同。 4、不用考虑死锁的问题 —— 不修改变量 Java8 新增的函数接口 分四种: 先看下源码的介绍 Function 接收一个T类型参数,返回R类型。

    1.1K11发布于 2019-12-23
  • 来自专栏四火的唠叨

    函数编程

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

    94011编辑于 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) {

    63501编辑于 2023-05-30
  • 来自专栏学院君的专栏

    Go 函数编程篇(一):函数使用入门和常用内置函数介绍

    几乎所有编程语言都支持函数,编写函数的目的在于将复杂的问题分解为一系列简单的任务来处理,此外同一个函数还可以被多次复用,从而提高代码复用性,因此这一语法结构在函数编程中至关重要。 在 Go 语言中,函数主要有三种类型: 普通函数 匿名函数(闭包) 类方法 我们将从普通函数的基本定义和调用开始,揭开 Go 函数的面纱。 ,只有函数名首字母大写的函数才可以被访问,这个涉及到包的可见性,后面在介绍面向对象编程时会详细讨论这个,这里你只需要了解首字母大写的 Go 函数即相当于其它语言的 public 公开函数。 下面我们对上述内置函数的使用进行简单的示例,close、panic、recover 后面我们在介绍并发编程的管道以及错误处理时会具体介绍,我们先来看看其他函数的使用示例。 剩下的几个内置函数留到后面介绍错误处理和并发编程时再详细介绍。

    56530编辑于 2023-03-03
  • 来自专栏张家辉的树屋

    JavaScript: 函数编程 - 声明函数

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

    1.8K30发布于 2021-02-02
  • 来自专栏IT开发技术与工作效率

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

    Java 8 函数编程 java.util.function.* @FunctionalInterface 都是函数接口,没有成员(状态) 高阶函数:参数或返回值为函数 方法引用:类名::方法名 返回类型 接口方法: Supplier supplier(); // 供应器:创建容器 BiConsumer<A, T> accumulator(); // 累加器:类似reduce的第二参数(函数 Collectors.maxBy(Comparator 比较规则)) .parallel() // BaseStream 并行流 集合.parallelStream() 影响性能因素:1.数据大小、2. flatMap(速度快) 有状态:sorted、distinct、limit .mapToInt() // 映射并转换为基本类型,其他类似 基本类型速度快、占用小 IntStream.of(1, 2, ::isPrime) .count(); } private boolean isPrime(int number) { return IntStream.range(2,

    1.5K30发布于 2018-09-29
  • 来自专栏全栈程序员必看

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

    JAVA函数编程 背景 常见的编程范式 函数编程的优劣 JAVA8中为函数编程引入的变化 JAVA函数编程可以简单概括 基本函数 Lambda表达式 方法引用 Stream流API 创建操作 中间操作 比如时下潮流前沿spring framework5中的响应编程就是使用到了函数编程的风格。 代表语言有:SQL,HTML,CSS 函数编程函数编程函数作为编程中的“一等公民”,关注于流程而非具体实现。可以将函数作为参数或返回值。所有数据的操作都通过函数来实现。可以理解为数学中的函数。 被default修饰的方法–默认实现 JAVA函数编程可以简单概括 lambda + 方法引用 + stream API = java函数编程 基本函数 以上是在函数编程中的基本函数模型,我们大可以将其与数学函数做关联 Stream流API是函数编程的核心所在,它以一种流式编程来对数据进行各种加工运算。形象的来说你可以把它看作工业中的流水线,将原料放入流中经过操作1、操作2…操作N输出一个产品。

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