Erlang函数声明

/ / Erlang函数声明

定义函数

函数声明的语法如下-

FunctionName(Pattern1 PatternN) ->
Body;
  • FunctionName               - 函数名称是一个原子。

  • Pattern1…PatternN       - 每个参数都是一个模式。

  • Body                                 - 子句主体由用逗号(,)分隔的一系列表达式组成:

以下程序是使用函数的简单示例-

无涯教程网

-module(helloLearnfk). 
-export([add/2,start/0]). 

add(X,Y) -> 
   Z=X+Y, 
   io:fwrite("~w~n",[Z]). 
   
start() -> 
   add(5,6).

关于上述程序,应注意以下几点:

  • 我们定义了两个函数,一个叫做 add ,它带有两个参数,另一个是 start 函数。

  • 这两个函数都由导出函数定义,如果不这样做,将无法使用该函数。

  • 可以在另一个函数内部调用一个函数,在这里,我们从start函数开始调用add 函数

上面程序的输出将是-

11

匿名函数

匿名函数是没有名称的函数, Erlang具有定义匿名函数的函数,以下程序是匿名函数的示例。

-module(helloLearnfk). 
-export([start/0]). 

start() -> 
   Fn=fun() -> 
      io:fwrite("Anonymous Function") end, 
   Fn().

需要注意以下几点:

链接:https://www.learnfk.comhttps://www.learnfk.com/erlang/erlang-functions.html

来源:LearnFk无涯教程网

  • 匿名函数是使用 fun()关键字定义的。

  • 函数已分配给名为Fn的变量。

  • 通过变量名称调用该函数。

上面程序的输出将是-

Anonymous Function

函数参数

在以下示例中,为每个函数定义使用多个参数定义了函数演示。

-module(helloLearnfk). 
-export([add/2,add/3,start/0]). 

add(X,Y) -> 
   Z=X+Y, 
   io:fwrite("~w~n",[Z]). 
   
add(X,Y,Z) -> 
   A=X+Y+Z, 
   io:fwrite("~w~n",[A]). 
 
start() ->
   add(5,6), 
   add(5,6,6).

在上面的程序中,我们两次定义了add函数,但是第一个添加函数的定义包含两个参数,第二个添加函数包含三个参数。

上面程序的输出将是-

11
17

保护序列

Erlang中的函数还具有保护序列的函数,这些只不过是表达式,仅当计算输出为true时,这些表达式才会使函数运行。

以下程序显示了带有保护序列的函数的语法。

FunctionName(Pattern1 PatternN) [when GuardSeq1]->
Body;
  • FunctionName               - 函数名称是一个原子。

  • Pattern1…PatternN       - 每个参数都是一个模式。

  • Body                                 - 子句主体由用逗号(,)分隔的一系列表达式组成。

  • GuardSeq1                     - 这是调用函数时要求值的表达式。

以下程序是带有保护序列的函数使用的简单示例。

-module(helloLearnfk). 
-export([add/1,start/0]). 

add(X) when X>3 -> 
   io:fwrite("~w~n",[X]). 

start() -> 
   add(4).

上面程序的输出是-

4

如果将add函数称为 add(3),则该程序将导致错误。

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

AI重塑云原生应用开发实战 -〔邢云阳〕

MySQL运维实战课 -〔张新铭(俊达)〕

徐昊 · AI 时代的软件工程 -〔徐昊〕

结构学习力 -〔李忠秋〕

说透芯片 -〔邵巍〕

实用密码学 -〔范学雷〕

白话法律42讲 -〔周甲徳〕

快速上手Kotlin开发 -〔张涛〕

左耳听风 -〔陈皓〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者