编写一个名为 sort_of_sum 的 Erlang 函数,它接受一个参数 List该函数的行为应如下:

问题描述

编写一个名为 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").