首页 理论教育 函数式编程入门:使用Elixir学习将具名函数作为值使用

函数式编程入门:使用Elixir学习将具名函数作为值使用

时间:2023-11-20 理论教育 版权反馈
【摘要】:Elixir试图调用一个不带参数的函数String.upcase,结果出错了。我们来创建一个匿名函数,它使用给定参数调用String.upcase/1。Elixir提供了一个方便的运算符&,它可以很容易地完成上述目标。传递给运算符的函数必须遵循function/arity的模式。这是将具名函数绑定到变量或函数参数的快捷方法。让我们用这种方式定义total_cost函数:&运算符表示开始定义函数,函数主体位于括号内。有了这些信息,Elixir编译器会创建一个接收两个参数的函数,将第一个参数乘以第二个参数。

函数式编程入门:使用Elixir学习将具名函数作为值使用

当我们使用匿名函数时,可以选择将它们绑定到变量或在参数中使用它们。具名函数也一样吗?让我们试一下:

好吧,我们不能这样做。Elixir试图调用一个不带参数的函数String.upcase,结果出错了。如果希望像使用值一样使用String.upcase/1,可以将该函数包装在匿名函数中。我们来创建一个匿名函数,它使用给定参数调用String.upcase/1。

这是函数式编程中的常见模式。Elixir提供了一个方便的运算符&,它可以很容易地完成上述目标。

这里使用&运算符获取对函数String.upcase/1的引用,并使用=运算符将它绑定到upcase变量。传递给运算符的函数必须遵循function/arity的模式。这是将具名函数绑定到变量或函数参数的快捷方法。

还可以用&运算符创建匿名函数。让我们用这种方式定义total_cost函数:(www.xing528.com)

&运算符表示开始定义函数,函数主体位于括号内。表达式将&1乘以&2。&1是第一个参数,&2是第二个参数。有了这些信息,Elixir编译器会创建一个接收两个参数的函数,将第一个参数乘以第二个参数。注意,我们不能使用这种方式创建无参数的匿名函数。

在这种情况下,应该使用显式的fn定义函数:

&运算符后面的括号是可选的:

请谨慎使用&运算符,因为缺少参数名称会影响代码的可读性。过多地使用它会使你的代码难以理解。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈