问题描述
编写一个名为 sort_of_sum 的 Erlang 函数,它接受一个参数 List。该函数的行为应如下所示:
(使用模式匹配来解决这个问题。)
- 如果 List 是一个没有元素的列表,打印“那里什么都没有!”
- 如果 List 是一个只有一个元素的列表,则打印“The sum is sum”。其中 sum 是元素。
- 如果 List 是一个包含两个元素的列表,则打印“The sum is sum”。其中 sum 是两个元素的总和。
- 如果 List 是一个包含三个元素的列表,则打印“The sum is sum”。其中 sum 是三个元素的总和。
- 如果 List 是包含三个以上元素的列表,则打印“添加太多!”提示:您可能需要使用尾部构造 |以某种方式与此模式匹配。
- 如果 List 是其他内容,请打印“我无法添加!”
解决方法
使用 ~w
格式化整数,而不是 ~s
。你走在正确的轨道上。
-module(main).
-export([sort_of_sum/1]).
sort_of_sum([]) ->
io:format("There is nothing there!~n");
sort_of_sum([H]) ->
io:format("The sum is ~w.~n",[H]);
sort_of_sum([H1,H2]) ->
io:format("The sum is ~w.~n",[H1 + H2]);
sort_of_sum([H1,H2,H3]) ->
io:format("The sum is ~w.~n",[H1 + H2 + H3]);
sort_of_sum([_H | _T]) ->
io:format("That's too many to add!~n");
sort_of_sum(_) ->
io:format("I can't add that!~n").