函数式编程指南

     

Python中聚合操作

141 3K

在Python中,聚合操作通常与迭代器和生成器一起使用,用于对数据集合进行处理。Python提供了一些内置的聚合函数以及一些灵活的工具,例如map、filter和reduce。内置聚合函数:聚合操作是.

Java中的聚合操作

92 8K

在 Java 编程领域中,数据处理是一项常见任务,通常涉及操作对象集合。在 Java 8 发布之前,对集合执行操作需要使用循环或外部库编写冗长且容易出错的代码。然而,随着 Stream API 和聚合.

Java中使用 Lambda 实现字符串反转

105 5K

Java8以后lambda 表达式函数使编写更短、更具表现力的代码行成为可能。您可以使用 lambda 表达式有效地将代码作为数据传输或将函数视为方法参数。它们经常用于函数式编程,从而产生了一种更简洁.

Python中8种Functools使用方法

227 9K

在本文中,我们来看看functools 标准库模块以及您可以用它做的 6 件很酷的事情1. 缓存可以使用@cache装饰器(以前称为@lru_cache)作为“简单的轻量级无界函数缓存”。典型的例子是.

REST与RPC = 面向对象和函数编程

278 1 4K

REST 与 RPC 的争论:REST API ! = HTTP 远程过程调用作为开发人员,每当需要 API 时,我们常听到的一句话就是 "哦,我们可以为此开发一个 REST API"。好吧,这没什么.

Rust中使用冒号的5种方式

293 3K

在 Rust 中,冒号(:)用于不同的上下文。下面是 Rust 中冒号的一些常见用法:1、类型注解:在变量和函数参数声明中使用冒号来指定类型。let x: i32 = 42;在 Rust 中,当指定变.

Java中迭代Map和List最简单直接办法

170

这里介绍可以迭代 Map 和 List 最简单直接办法,代码量最少。方法 1:标准for方法:List:for(String item:sList) {..}Map:for(Map.Entry<Str.

拦截器责任链也是函数式编程

90 5K

拦截器是一种强大的机制,可以监视、重写和重试调用。拦截器可以被链接起来。假设您同时拥有压缩拦截器和校验和拦截器:您需要决定是压缩数据然后进行校验和,还是进行校验和然后压缩。OkHttp使用列表来跟踪拦.

Java中列表List的可变性和不变性

212 11K

以下Java代码示例List分可变的,不可变的两种:1、可变ArrayList 是 List 的可变实现@Testpublic void arrayList(){    // Mutable    L.

Python数据管道中的设计模式

278 13K

使用适当的代码设计模式可以使您的代码易于阅读、可扩展,并且可以无缝地修改现有逻辑、调试,并使开发人员能够更快地上手。为了演示代码设计模式,我们将构建一个简单的 ETL 项目,让我们从 Reddit 中.

为什么Java引入List.of()方法?

154

Java 9 中引入的 `List.of()` 方法提供了生成不可变列表的便捷方法。这是 JDK 开发人员为提供简洁而富有表现力的方法来处理集合而迈出的进步一步。 添加此方法背后的主要背景和灵感是跟随.

什么是一阶逻辑?

296 2K

一阶逻辑(FOL)是指句子或陈述的谓词只能指单个主语Subject的逻辑。一阶逻辑也称为谓词逻辑或一阶谓词逻辑,它不但能以更简便的方式表达对象信息,还能表达这些对象之间的关系。一阶逻辑(像自然语言一样.

编程范式列表

122 3K

本文中介绍的编程范例的列表: 结构化编程 函数式编程 面向对象编程 面向数据的编程 可组合编程 依赖注入 声明式编程 自上而下与自下而上 极简主义与极简主义 自适应编程 渐进式软件开发 自我驱动的开.

Rust有面向对象特性吗?

172

structs、traits 和 impls 被解释为在 Rust 中进行 OOP 的一种方式。关于语言的哲学比较: Rust 具有对象特性,但并不以它们为导向。 Java 现在具有函数式特性,但仍然.

一张图说明继承的缺点

192
多轮继承以后,无法确定结果类型。解决方法: 1、只限制一轮继承 2、只限制在业务功能上的继承,如领域模型实体和值对象 3、默认使用组合,类似Golang Rust语言直接迫使你使用组合,完全形式化与函.

数学证明和计算机程序等同

145 2K

数学证明可以表示为计算机程序,反之亦然。这种对应关系被称为库里-霍华德同构,它在逻辑和计算机科学的概念之间建立了等价关系。逻辑中的命题相当于编程中的类型,证明相当于程序。具体来说,证明一个陈述为真可以.

JEP 草案:不能为null的值类型

74

Java 目前有类class 和记录record 引用类型。他们仍在计划添加值记录value record和值类型value class。 增加了!,Long!是 Long 的非空版本。 增加了隐式构.

代数化函数式领域建模的案例

105 2K

我们可以完全实现一个运算,而不需要查看任何组合运算的具体实现。就像你在数学中操作代数表达式一样。假设将generateTrades作为领域服务 TradingService 的一部分。其目的是生成当天.

Go-memoize:缓存函数调用结果的开源工具

138 2K

这是一个简单、简洁的 Go 记忆器。缓存昂贵的函数调用。Go-memoize 已经投入生产几年了。在内存中缓存昂贵的函数调用,并具有可配置的超时和清除间隔:import (    "time"    .

DDD:从聚合到函数组合的改变

253 2

来自OSKAR DUDYCZ的DDD变化旅程。这是我目前所处的进化阶段:我从经典聚合开始,遵循领域驱动设计和典型的面向对象战术模式。因此,将数据和行为封装在一个类中。然后,仅允许通过公共方法进行更改,.

Java 21模式匹配标志Java正式支持函数式编程

333 1 10K

来自WSCP 的博客:Java 21 将于 2023 年 9 月 19 日发布,支持 switch 块和表达式中的记录模式。这种语法是具有里程碑意义的,它标志着 Java 可以被认为以类似于 Kotl.

不变性是一种更好的调试器?

237 2K

来自Marc's Blog的文章:不变性是推理算法、数据结构和分布式系统的强大工具。对于您设计或实现的任何复杂系统或算法,都值得考虑一组不变性。以这样的方式构建您的实现也是值得的,即使是全局不变性也可.

如何阅读类型系统符号?

394 20K
对于许多对类型系统和类型理论感兴趣的人来说,他们第一次接触文献时会看到以下内容:这种语法虽然看起来很复杂,但实际上相当简单。基本思想来自形式逻辑:整个表达式是一个蕴涵implication ,上半部分.

Unchecked开源工具让你永远告别Java异常检查

594 1 4K

Unchecked将 Java 的检查出异常”破解为“未检查出任何异常Exception”。当你遭遇Exception异常时,你需要使用try{}捕获处理这个异常,或者将这个异常依然抛出,只有这两种选.

函数式编程与面向对象编程比较分析

431

函数式编程和面向对象编程是软件开发领域中最流行的两种编程范式。两者都有自己独特的优势和劣势,两者的选择往往取决于项目的具体要求。在这篇文章中,我们将对函数式编程和面向对象编程进行比较分析,突出它们的主.

关于领域建模的最佳书籍

902 1 3K

如果有人在我早期的职业生涯中告诉我,我将成为函数式编程的有力倡导者和函数式软件工程基础书籍的作者,我一定会觉得难以相信。函数式编程真的值得我为之奉献一生吗?然而,一旦我体验到函数式编程的纯粹之美,就再.

Java中的流畅接口和构建模式之间的区别

398 3K

流畅接口Fluent Interface 是一种面向对象的 API 设计,它允许我们以可读和直观的方式将方法调用链接在一起。要实现它,我们需要声明从同一类返回对象的方法。因此,我们将能够将多个方法调用.

Rust适合领域概念吗? - Reddit

770 1

我使用Rust将近一年了,我写了大约2万行代码(CLI、WebAssembly应用、Web服务器......)。在我看来,编程范式的演变是朝着越来越大的设施去操作代表领域概念的结构。例如,一个Java.

Rust 可组合性比较差

510 3K

我爱锈。我希望他们能花更多时间让它真正适用于非 hello-world 用例。迭代Rust 有一个很好的迭代语法:for x in &mut something {    *x = (*x) * 2;.

一张图:函数式编程 vs. 面向对象编程

1647 1
FP适合处理管道:GoF中的结构模式如#装饰器模式 其实使用FP替代很干净方便,没有必要一定要通过OOP的方式转个弯去实现。FP这种方式也适合 领域事件 在BC上下文之间的处理等场景OOP适合数据、领.