从数组 erlang 中打印给定的元组

Printing a given tuple out of an array erlang

我在使用 erlang 时遇到了一些小问题,即我想打印出数组的给定部分,但是,我似乎无法轻松地做到这一点。

这是我尝试使用 array:get(X, Array) 打印的数组。

[{carrier, [{e,10}, {f,10}, {g,10}, {h,10}, {i,10}]}, 
{battleship, [{a,1}, {a,2}, {a,3}, {a,4}]}, 
{cruiser, [{e,3}, {e,4}, {e,5}]}, 
{destroyer, [{f,4},{g,4}, {h,4}]}, 
{patrol_boat, [{j,7},{j,8}]}]

我能够打印出整个数组,但是我无法从中得到一个元组。

理想情况下,我可以用 carrier 的 return 来做 element(1, array:get(0, Array)).

如有任何帮助,我们将不胜感激。

您的构造是列表,而不是数组。取而代之的是 Erlang array is something entirely different. You need to look at the lists module

要获取第一个元素,可以使用模式匹配。这是一个示例 shell 会话:

1> List = [{carrier, [{e,10}, {f,10}, {g,10}, {h,10}, {i,10}]}, 
           {battleship, [{a,1}, {a,2}, {a,3}, {a,4}]}, 
           {cruiser, [{e,3}, {e,4}, {e,5}]}, 
           {destroyer, [{f,4},{g,4}, {h,4}]}, 
           {patrol_boat, [{j,7},{j,8}]}].
[{carrier,[{e,10},{f,10},{g,10},{h,10},{i,10}]},
 {battleship,[{a,1},{a,2},{a,3},{a,4}]},
 {cruiser,[{e,3},{e,4},{e,5}]},
 {destroyer,[{f,4},{g,4},{h,4}]},
 {patrol_boat,[{j,7},{j,8}]}]
2> [{ShipType, _}|_] = List.
[{carrier,[{e,10},{f,10},{g,10},{h,10},{i,10}]},
 {battleship,[{a,1},{a,2},{a,3},{a,4}]},
 {cruiser,[{e,3},{e,4},{e,5}]},
 {destroyer,[{f,4},{g,4},{h,4}]},
 {patrol_boat,[{j,7},{j,8}]}]
3> ShipType.
carrier

如您所见,ShipType 将从这场比赛中设置为 carrier

要获取列表的其他元素,可以使用lists:nth/2。例如,要获取整个第 3 个元素:

4> Third = lists:nth(3, List).
{cruiser,[{e,3},{e,4},{e,5}]}

有关 Erlang 列表的更多信息,请查看任何 Erlang 书籍或 any of these resources