通过Dave(PragProg)Elixir书。挑战是将一对元组转换为列表。
这有效
pair = fn {a,b} -> [a,b] end
pair.({1,2}) #=> [1,2]
现在我尝试使用速记符号(我觉得有些东西丢失但不知道它是什么......例如我怎么说我期待/发送一个元组)
如何使用速记符号获得相同的结果?
pair = &([&1,&2])
pair.({1,2}) #=> BadArityError
试过这个
pair = &{[&1,&2]} # but didn't work. I am missing something important
答案 0 :(得分:3)
它不起作用,因为{a, b}
是一个参数,所以它被传递为&1
,没有&2
。
我能想到的一种方法是使用Tuple.to_list/1
函数,这样就可以了:
pair = &Tuple.to_list/1
pair.({1,2}) #=> [1,2]
但如果这不是您想要的,那么您可以使用以下内容:
pair = &([elem(&1, 0), elem(&1, 1)])
pair.({1,2}) #=> [1,2]
但这是一个简单的例子,只适用于2个元素元组,但它可以让你理解你做错了什么。