Elixir 如何获得键值输出

Elixir 如何获得键值输出,elixir,Elixir,我正在研究一个解决方案,我想在1+0+1=2中添加一些数字,例如101结果,并将其输出为101,2 我有一个数组,所以它不能正常工作,以下是我目前的代码: numbers=Enum.map(数组,fn i->String.to_integer(i)end) #得到这些数字的总和 sum=Enum.map(数字,fni->Integer.digits(i)|>Enum.sum()结束) 有什么想法吗?如果您想同时获得数字和数字的总和,您应该在映射函数中返回一个元组或列表,如下所示: sum =

我正在研究一个解决方案,我想在
1+0+1=2
中添加一些数字,例如
101
结果,并将其输出为
101,2

我有一个数组,所以它不能正常工作,以下是我目前的代码:

numbers=Enum.map(数组,fn i->String.to_integer(i)end)
#得到这些数字的总和
sum=Enum.map(数字,fni->Integer.digits(i)|>Enum.sum()结束)

有什么想法吗?

如果您想同时获得数字和数字的总和,您应该在映射函数中返回一个元组或列表,如下所示:

sum = Enum.map(nums, fn i -> {i, Integer.digits(i) |> Enum.sum()} end)

现在,给定一个字符串列表,如
[“101”,“202”]
sum
将等于
[{101,2},{202,4}]

,如果您想同时获得数字及其数字之和,您应该在映射函数中返回一个元组或列表,如下所示:

sum = Enum.map(nums, fn i -> {i, Integer.digits(i) |> Enum.sum()} end)

现在,给定一个类似
[“101”,“202”]
的字符串列表,
sum
将等于
[{101,2},{202,4}]
TGO提供了正确的解决方案,我只想指出,您可以通过管道将这些操作连接在一起以获得更简洁的函数,如果对第一个映射使用
而不是
枚举
,则列表将只延迟枚举一次。您要求提供键值输出,所以我选择了映射而不是元组

def sum_数字(列表)do
列表
|>Stream.map(&String.to_integer/1)
|>map(fn i->%{i=>i |>Integer.digits()|>Enum.sum()}end)
结束
例如:

iex>示例。求和数字([“101”,“123”])
[%{101 => 2}, %{123 => 6}]

TGO提供了正确的解决方案,我只想指出,您可以通过管道将操作连接在一起以实现更干净的函数,如果您对第一个映射使用
而不是
枚举
,那么列表将只延迟枚举一次。您要求提供键值输出,所以我选择了映射而不是元组

def sum_数字(列表)do
列表
|>Stream.map(&String.to_integer/1)
|>map(fn i->%{i=>i |>Integer.digits()|>Enum.sum()}end)
结束
例如:

iex>示例。求和数字([“101”,“123”])
[%{101 => 2}, %{123 => 6}]

您能解释一下“工作不正常”是什么意思吗?您是否遇到ArgumentError(字符串不能解析为整数)?你有一个期望整数的列表吗?你能解释一下“工作不正常”是什么意思吗?您是否遇到ArgumentError(字符串不能解析为整数)?您是否有一个需要整数的列表?