elixir - Elixir 计算元组的总和
问题描述
我有一些代码需要计算在 a 中返回的sum
那些。我怎么能做到这一点?tuples
list
def calc_points(hand) do
Enum.map(hand, fn x -> String.at(x,0) end)
|> Enum.map( fn x ->
cond do
x == "J" -> {2}
x == "Q" -> {3}
x == "K" -> {4}
x == "A" -> {1}
true -> case Integer.parse(x) do
{num, ""} -> {num}
{_, rest} -> {:error, :unparsable}
{:error} -> {:error, :unparsable}
end
end
end)
end
input
价值是["6 of spades", "6 of suites"]
,output
我得到这个代码是[{6}, {6}]
。我怎么能把这个值加起来到 12?使用我已经拥有的代码?还是需要重构代码?
解决方案
我最终将{num, ""} -> {num}
行更改为{num, ""} -> num
那样,它返回了一个list
值,我最终使用|>
它Enum.sum()
来计算sum
编辑 2
我最终得到了这个代码解决方案
def calc_points(hand) do
Enum.map(hand, fn x -> String.split(x) end)
|> Enum.map(fn x -> Enum.at(x, 0) end)
|> Enum.map( fn x ->
cond do
x == "J" -> 2
x == "Q" -> 3
x == "K" -> 4
x == "Ace" -> 1
true -> case Integer.parse(x) do
{num, ""} -> num
{_, rest} -> {:error, :unparsable}
{:error} -> {:error, :unparsable}
end
end
end)
|> Enum.reduce(0,fn x,acc when is_number(x) ->
x+acc
_, acc -> acc
end)
end
推荐阅读
- php - 为什么重定向不起作用?你会如何解决它?
- firebase - Firebase 存储规则奇怪的行为
- r - 使用 group_by() 后,按时间帧窗口为数据帧中的每一行设置数据子集
- python - 函数返回包含子字符串所有元素的第一个可能的子字符串
- javascript - 在javascript中更改输入数字时如何使值自动更新?
- php - 如何在 Apache 2.4.46 上启用 HTTP 请求标头
- excel - 如何使用 VBA 轻松将 CSV 文件输入 Excel?
- php - laravel excel导出 - 数据存储为文本而不是数字
- c# - C#:使用 foreach 和数组元素组合 2 个列表
- javascript - 我们如何在 beforeEach 中正确初始化 Cypress 拦截?