Elixir编程:模块、测试与数据结构深度解析
1. 函数调试与模块属性
在编程过程中,我们可能会遇到各种异常。比如在处理 flatten/1 函数时,可能会遇到不匹配异常。经过分析发现,该函数一直假设列表的头部也是一个列表,但它本应处理任意深度的嵌套,包括零嵌套的情况。因此,我们需要添加新的模式来解决这个问题。
修改后的 Flatten 模块如下:
defmodule Flatten do
def flatten([]), do: []
def flatten([h|t]) when is_list(h), do: h ++ flatten(t)
def flatten([h|t]), do: [h] ++ flatten(t)
end
修改后再次运行测试,应该能通过:
$ mix test
Compiled lib/flatten.ex
Generated flatten app
..
Finished in 0.03 seconds (0.03s on load, 0.00s on tests)
2 tests, 0 failures
Randomized with seed 466648
这个过程与测试驱动开发(TDD)或其他测试和测试开发策略类似。
模块是代码构建块的封装单元,函数则是模块内的具体构建块。为了更好地管理模块和函数,我们可以使用模块属性。在 Elixir
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



