我有一段代码是这样的:
Fi_F = fun (F, I, Xs) ->
fun ( X ) ->
F( x_to_list(X, Xs, I) )
end
end,
我只需要将列表的功能转换为一个数字的功能。例如,对于 Xs = [1,2,3] 和 I = 2,我希望这可以授予我以下功能:
fun ( X ) -> F([ 1, X, 3]) end.
但不知何故,F、I 和 X 被遮蔽,而不是关闭,因此它在 x_to_list 中失败,列表为空。
我还是 Erlang 的新手,我认为我缺少概念性的东西,而不仅仅是语法问题。
UPD:发现了一个错误。我这样写 x_to_list/3 :
x_to_list( X, L, I ) ->
lists:sublist(L, I) ++ [ X ] ++ lists:nthtail(I+1, L).
所以它从 0 开始计算列表元素,而不是 1。当我用 I = 3 调用它时,它会失败。所以这不是关闭。
我仍然有阴影警告,但这完全是另一个问题。