Elixir 语言 函数定义与调用

Elixir阿木 发布于 2025-06-19 4 次阅读


Elixir 语言中的函数定义与调用:深入浅出

Elixir 是一种功能强大的函数式编程语言,它运行在 Erlang 虚拟机上,继承了 Erlang 的并发和分布式系统特性。在 Elixir 中,函数是构建程序的基本单元。本文将围绕 Elixir 语言中的函数定义与调用展开,深入探讨其特性和使用方法。

函数定义

在 Elixir 中,函数是通过 `def` 关键字定义的。函数定义的基本格式如下:

elixir

def function_name(args) do


函数体


end


其中,`function_name` 是函数的名称,`args` 是函数的参数列表。函数体是函数执行的具体代码。

简单函数示例

以下是一个简单的函数示例,该函数计算两个数的和:

elixir

def sum(a, b) do


a + b


end


在这个例子中,`sum` 是函数名,`a` 和 `b` 是参数。

默认参数

Elixir 允许为函数参数设置默认值。如果调用函数时未提供某个参数,则使用默认值。

elixir

def sum(a, b, c 0) do


a + b + c


end


在这个例子中,如果调用 `sum(1, 2)`,则 `c` 将使用默认值 `0`。

关键字参数

Elixir 支持关键字参数,允许在调用函数时指定参数的名称。

elixir

def sum(a, b, c: c) do


a + b + c


end

sum(1, 2, c: 3)


输出: 6


在这个例子中,`c` 是一个关键字参数,其值在调用函数时指定。

函数调用

在 Elixir 中,函数调用是通过在函数名后跟参数列表来完成的。以下是一些函数调用的示例:

简单调用

elixir

sum(1, 2)


输出: 3


使用默认参数

elixir

sum(1, 2, 3)


输出: 6


sum(1, 2)


输出: 3


使用关键字参数

elixir

sum(a: 1, b: 2, c: 3)


输出: 6


高阶函数

Elixir 支持高阶函数,即接受函数作为参数或返回函数的函数。高阶函数是函数式编程的核心概念之一。

函数作为参数

elixir

defmodule Math do


def apply_operation(a, b, operation) do


operation.(a, b)


end


end

Math.apply_operation(1, 2, &(&1 + &2))


输出: 3


在这个例子中,`operation` 是一个函数,它被传递给 `apply_operation` 函数。

函数作为返回值

elixir

defmodule Math do


def create_adder do


fn a -> fn b -> a + b end end


end

adder = Math.create_adder.()


adder.(1)


adder.(2)


输出: 3


end


在这个例子中,`create_adder` 函数返回一个匿名函数,该匿名函数接受一个参数 `b` 并返回 `a + b`。

闭包

闭包是函数式编程中的另一个重要概念,它允许函数访问其定义作用域中的变量。

闭包示例

elixir

defmodule Counter do


def create_counter do


count = 0


fn() -> count end


end

counter = Counter.create_counter.()


counter


输出: 0

counter()


输出: 0

counter()


输出: 1


end


在这个例子中,`create_counter` 函数返回一个匿名函数,该匿名函数可以访问并修改 `count` 变量。

总结

Elixir 语言中的函数定义与调用提供了强大的编程能力。通过理解函数定义、调用、高阶函数和闭包等概念,开发者可以构建出高效、可扩展的 Elixir 应用程序。本文深入浅出地介绍了这些概念,希望对读者有所帮助。