2017-05-08 71 views
4

我有这样的:的“和”不带参数

case test123(&(:some_module.test456(789))) do 
     # ... 
    end 

错误:

invalid args for &, expected an expression in the format of &Mod.fun/arity, 
&local/arity or a capture containing at least one argument as &1, 
got: :some_module.test456(789) 

不过,我没有一个参数传递到它和之前它只是

fn(_) -> :some_module.test456(789) end 

如何解决?切换回“fn”?

回答

4

&语法不能用于创建这样的匿名函数,因为编译器无法知道您是否想要创建0或1或2或更多的arity函数。你将不得不继续使用fn(_) -> :some_module.test456(789) end

+0

'fn(_) - > ...'需要一个参数。 '&'也可以用来形成一个匿名函数,不管作为其一个参数传递什么,它都会执行相同的操作。也许你的意思是'fn - >:some_module.test456(789)end'? –

+0

如何使用'&'创建'fn(_) - >:some_module.test456(789)end'的等价物?我相信这个函数正是OP想要的,我不知道用什么方法来实现'&'。 – Dogbert

+0

这不是很漂亮,例如'&(hd [“return this”,&1])'。但是我认为OP想要零度,我认为这不能用&来实现。 –