从数组 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。
我在使用 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。