Elixir:方法参数被视为函数

时间:2017-01-18 03:24:01

标签: elixir

我正在尝试在二叉树中的给定级别打印节点。我已经写了一个方法来执行此操作和一个保护子句来处理基本条件(我没有包含在问题中)

def get_node_at_level(root, height) do
   get_node_at_level(root.left, height -1)
   get_node_at_level(root.right, height -1)
end

这种方法给我错误说

  

height -1“看起来像一个函数调用,但有一个名为”height“的变量,请使用显式括号或偶数空格       (stdlib)lists.erl:1353 :: lists.mapfoldl / 3       (stdlib)lists.erl:1354 :: lists.mapfoldl / 3

1 个答案:

答案 0 :(得分:4)

简短回答:将height -1替换为height - 1

由于在Elixir中可以不使用括号调用函数,height后跟-后跟1可能意味着height减去1或调用函数带有参数height的{​​{1}}。 Elixir决定-1x-1应该是x - 1减去x,而1应该发出错误(可能),因为它可能看起来像你一样调用函数,并要求用户改为使用x -1x-1x - 1