章节目录
(译)Études for Elixir Chapter 2: 函数和模块
(译)Études for Elixir Chapter 3: 原子,元组和模式匹配
Étude 2-1: 编写一个函数
编写包含一个函数的模块, 该函数以一个矩形的长度和宽度作为参数并返回面积. 模块名称名为Geom
, 函数命名为area
. 保存为文件geom.ex
. 函数有两个参数.
defmodule Geom do
def area(length, width) do
length * width
end
end
iex(1)> c("geom.ex")
[Geom]
iex(2)> Geom.area(3,4)
12
iex(3)> Geom.area(12, 7)
84
Étude 2-2: 编写一个有默认值的函数
修改函数, 添加参数的默认值
defmodule Geom do
def area(length \\ 1, width \\ 1) do
length * width
end
end
调用函数
iex(1)> c("geom.ex")
[Geom]
iex(2)> Geom.area(7, 5)
35
iex(3)> Geom.area(7)
7
iex(4)> Geom.area()
1
Étude 2-3: 编写模块文档
defmodule Geom do
@moduledoc """
Functions for calculating areas of geometric shapes.
from *Études for Elixir*, O'Reilly Media, Inc., 2013.
Copyright 2013 by J. David Eisenberg.
"""
@vsn 0.1
@doc """
Calculates the area of a rectangle, given the length and width.
Returns the product of its arguments. The default value for
both arguments is 1.
"""
@spec area(number(), number()) :: number()
def area(length \\ 1, width \\ 1) do
length * width
end
end
Étude 2-4: Discovery Étude
如果默认值不在函数定义的参数列表最后会发生什么, 试试下面的代码, 并执行.
defmodule Test do
def sum( a \\ 3, b, c \\ 7) do
a + b + c
end
end
Test.sum(11, 22, 33)
Test.sum(11, 22)
Test.sum(11)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。