小编Bob*_*b K的帖子

Elixir:我从一个简单的加法函数中得到一个错误

我在Elixir中创建了一个简单函数,该函数将元组的值加1。

我将模块命名为Test,并将函数命名为addToTuple。它采用一个参数,即元组本身。

def addToTuple({X,Y}) do 
   {X,Y+1}
end
Run Code Online (Sandbox Code Playgroud)

我通过iex编译了模块,并收到以下警告:

 warning: this expression will fail with ArithmeticError
  Test.ex:68
Run Code Online (Sandbox Code Playgroud)

第68行引用了{X,Y + 1}。当我使用命令Test.addToTuple({4,5})运行该函数时,我不断收到此错误:

** (FunctionClauseError) no function clause matching in Test.addToTuple/1

    The following arguments were given to Test.addToTuple/1:

        # 1
        {4, 5}

    Test.ex:67: Test.addToTuple/1
Run Code Online (Sandbox Code Playgroud)

我期望得到{4,6}。

知道这里发生了什么吗?

更新1:

我将X和Y更改为小写,并且有效。但是,这次我对函数进行了一些修改,使其可以与原子一起使用:

def addToTuple({A,x,y}) do 
    {A,x,y+1}
end
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下命令调用该函数:Test.addToTuple({:F,4,5})。我期待得到{:F,4,6}。但是,我得到了这个错误:

** (FunctionClauseError) no function clause matching in Test.addToTuple/1

    The following arguments were given to Test.addToTuple/1:

        # 1
        {:F, 4, 5}

    Test.ex:67: Test.addToTuple/1
Run Code Online (Sandbox Code Playgroud)

我以为使用大写字符会被视为原子?如何解决?

elixir

0
推荐指数
1
解决办法
83
查看次数

标签 统计

elixir ×1