Clojure函数式编程的简要介绍

PawełCzerwiński在Unsplash上​​拍摄的照片

第一次学习函数式编程可能是艰巨而艰巨的,但是学习它可能会很有趣,并且可以改变您对代码编写方式的看法,尤其是对我而言,我从一开始就面向对象编写代码,同时学习Clojure再次激发了人们的兴奋,就像您首先要学习编码

有很多博客向您解释了为什么应该使用函数式编程,在这个博客中,我只希望您熟悉Clojure中的代码。

Clojure是一种Lisp方言通用编程语言,它是一种编译语言,但仍然完全动态,并且在Java虚拟机(JVM)上运行。 Clojure受益于JVM丰富的生态系统,我们可以使用Clojure代码中的Java类和库。
Clojure识别两种结构:

  • 数据结构的文字表示形式(例如数字,字符串,地图和向量):
 用户=> 1; 一个号码 
user =>“ foo”; 一个字符串
user => [“ fus”“ ro”“ dah”]; 字符串向量
  • 操作,这就是您的操作方式。 所有运算都采用开括号,运算符,操作数和闭括号的形式:
 用户=>(运算符操作数1操作数2 ...操作数) 

例如,如果要进行数学运算,则只需执行以下操作:

 用户=>(+1 2 3 4 5) 
15user =>(str“追加”“”“字符串”)
“附加字符串”

这可能与您以前使用的有所不同。 在其他语言中,取决于运算符和操作数,不同的运算可能具有不同的结构。 Clojure提供了结构上的统一性,无论您使用的是哪个操作员或使用何种数据,结构都是相同的。

在Clojure中,流控制运算符也是表达式,基本的控制流很少:

如果

if是最重要的条件表达式–它由条件,“ then”和“ else”组成。 if只评估条件选择的分支。

 用户=>(如果为布尔形式,则形式为可选,否则形式) 

  user =>(str“ 5是”(如果(偶数?5)“偶数”“奇数”)) 
5是奇数用户=>(if(true?false)“ if true”) 其他是可选的

如果和做

if仅对“ then”和“ else”采用一个表达式。 使用do创建较大的块,这些块是单个表达式。

 用户=>(如果(甚至是5) 
(做(println“ even”)“ foo”)
(do(println“ odd”)“ bar”)); =>奇数
; =>“酒吧”

nil,true,false,Truthiness,Equal和Boolean表达式

Clojure具有truefalse值。 nil表示Clojure中没有任何 。 您可以使用适当命名的nil?检查值是否为nil? 功能:

  user =>(没有?“ foo”) 
; => falseuser =>(nil?nil)
; =>是的

nilfalse都用来表示逻辑false ,而所有其他值在逻辑上都是真实的。

 用户=>(如果“您爱我”“打电话给我”) 
呼叫meuser =>(如果为零,则“我总是被忽略”“我是那个人”)
我就是被选择的那一位

现在,您在计算机上安装Clojure并开始学习,此博客足够温和,可以让您开始学习Clojure。 以下是一些我认为对学习Clojure有用的资源:

  1. https://clojure.org/
  2. https://www.braveclojure.com/

下一个博客将在Clojure中讨论收集功能

编码愉快!