Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 长生不老药_Elixir - Fatal编程技术网

Elixir 长生不老药

Elixir 长生不老药,elixir,Elixir,我正在研究长生不老药,并试图用头尾法以某种特定形式获取数据 我有这类数据[“09:89-87:45”,“23:23-23:23”,“65:65-23:04”] 用头和尾巴?我可以把这些数据输入[[“09:89-87:45”]、[“23:23-23:23”]、[“65:65-23:04”]表格吗 我现在所做的工作不好 iex(14)> defmodule Gy do ...(14)> d

我正在研究长生不老药,并试图用头尾法以某种特定形式获取数据

我有这类数据
[“09:89-87:45”,“23:23-23:23”,“65:65-23:04”]

用头和尾巴?我可以把这些数据输入
[[“09:89-87:45”]、[“23:23-23:23”]、[“65:65-23:04”]
表格吗

我现在所做的工作不好

iex(14)> defmodule Gy do                                                
...(14)>   def get_head_tail([head|tail]) do
...(14)>    [[head], get_head_tail(tail)]       
...(14)>   end
...(14)>   def get_head_tail([]) do
...(14)>     []
...(14)>   end
...(14)> end
它返回为
[[“09:89-87:45”]、[[“23:23-23:23”]、[[“65:65-23:04”]、[]]]
任何帮助都将不胜感激。

像这样的事情

def wrap([]), do: []
def wrap([a|bs]) do
  [[a]|wrap(bs)]
end
您使用了
而不是
|
,这意味着您创建了一个包含两个元素的列表,而不是将元素附加到列表的开头

[1|[2|[3]]] == [1|[2,3]] == [1,2,3]
相比

[1,[2,[3]]]
第二件事是您在一般情况之后定义了
get\u head\u tail([])
的特殊情况。您的版本仍然有效,但将特殊情况放在第一位是一个好习惯,因为第一个匹配表达式自上而下就是使用的表达式。您编写的下一个函数可能没有互斥子句,那么顺序就很重要了。

类似这样的东西

def wrap([]), do: []
def wrap([a|bs]) do
  [[a]|wrap(bs)]
end
您使用了
而不是
|
,这意味着您创建了一个包含两个元素的列表,而不是将元素附加到列表的开头

[1|[2|[3]]] == [1|[2,3]] == [1,2,3]
相比

[1,[2,[3]]]
第二件事是您在一般情况之后定义了
get\u head\u tail([])
的特殊情况。您的版本仍然有效,但将特殊情况放在第一位是一个好习惯,因为第一个匹配表达式自上而下就是使用的表达式。您编写的下一个函数可能没有互斥子句,因此顺序很重要。

您也可以使用以下方法来实现此结果:

iex> Enum.map(["09:89-87:45", "23:23-23:23", "65:65-23:04"], &([&1]))
[["09:89-87:45"], ["23:23-23:23"], ["65:65-23:04"]]
您还可以使用来实现此结果:

iex> Enum.map(["09:89-87:45", "23:23-23:23", "65:65-23:04"], &([&1]))
[["09:89-87:45"], ["23:23-23:23"], ["65:65-23:04"]]

由于您浏览了完整的列表,并希望获得与原始列表相同的元素数,因此您可以简单地使用列表理解:

for x <-["09:89-87:45", "23:23-23:23", "65:65-23:04"], do: [x]

对于x由于您浏览了完整的列表,并希望获得与原始列表中相同的元素数,因此您可以简单地使用列表理解:

for x <-["09:89-87:45", "23:23-23:23", "65:65-23:04"], do: [x]

对于x在这种情况下,第二个错误不是错误,因为
[]
[head | tail]
@mudasobwa好的,在这种情况下它不会改变程序的结果,但大多数人编写Erlang/Elixir的方式不是这样的,因为它可能会在类似的函数中产生差异。在这种情况下,第二个错误不是错误,因为
[]
不会匹配
[head | tail]
@mudasobwa好的,在这种情况下它不会改变程序的结果,但这不是大多数人编写Erlang/Elixir的方式,因为它可能会对类似的函数产生影响。@ijunaidvarooq抱歉,这不是返回与您希望得到的结果相同的结果吗?那我就不明白了,对不起。也许只有第一个和最后一个元素应该包装在一个单独的数组中?您能为包含4或5个元素的列表提供所需的结果吗?@ijunaidvarooq抱歉,这不是返回了您想要的结果吗?那我就不明白了,对不起。也许只有第一个和最后一个元素应该包装在一个单独的数组中?你能提供一个包含4或5个元素的列表的期望结果吗?