Elixir:不同数量的函数重载

2023-11-24

有没有办法定义具有不同数量的重载函数,例如在 C# 中我可以这样做:

foo(bar)

or

foo(bar, baz)

在 Elixir 中,唯一的方法是将它们放在单独的模块中,这很快就会变得混乱。有什么办法解决吗?

编辑:我做了一个错误的假设。我看到的重载函数的示例恰好具有相同的数量,因此我(错误地)认为这是一个要求。函数由其名称和数量唯一标识,因此实际上您可以重载具有不同数量的函数。


在 Erlang 和 Elixir 中,与许多其他语言(例如 C#)不同,函数通过其名称和数量来唯一标识,因此从技术上讲foo(bar) and foo(bar, baz)是完全不同的功能。但这实际上只是一个技术问题,要在 Elixir 中编写“重载”函数,您可以编写类似于以下定义的内容sum:

defmodule Math do
  def sum(list),       do: sum(list, 0)
  def sum([], acc),    do: acc
  def sum([h|t], acc), do: sum(t, acc + h)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elixir:不同数量的函数重载 的相关文章

随机推荐

  • java.lang.IllegalStateException:未注册解组器。检查WebServiceTemplate的配置

    当我向服务器发送 SOAP 请求时 它返回以下错误 我不确定如何配置 unmarshaller 我将向多个 Web 服务发送 SOAP 请求 WSDL is here 我访问了以下页面 但尚未找到解决方案 1 2 3 java lang I
  • 可以上传文件,但无法列出 S3 存储桶对象。获取访问被拒绝错误

    我正在尝试列出 S3 存储桶中的所有文件 但不断出现访问被拒绝的错误 我认为我拥有必要的权限IAM user Version 2012 10 17 Statement Sid SID Effect Allow Action s3 Abort
  • 使用文件输入类型将图像发送到服务器

    我有一个屏幕 可以从相机捕获视频并拍摄快照 我还有一个文件输入 我想将此选项设置为从相机捕获的图像 即快照 我不想将快照存储为 cookie 并在以后检索它 因为它稍后会使用户的计算机变得沉重并且每次都需要清洁 所以代码是
  • Outlook 2007 / 2013 不渲染 CSS 字体系列声明

    我正在使用 Litmus 测试电子邮件设计 但我无法在 Outlook 2007 2010 2013 中正确设置字体 每一个 HTML CSS 技巧 hack 都继续在 Times New Roman 中呈现 我主要使用简单的表格进行布局
  • JavaScript 属性继承

    我正在尝试创建一个通用的 List 类 其中包含 属性 项目 这将是一个 无论什么 的数组 方法 Add 这将是抽象的并由特定的 List 对象实现 方法 Count 返回 项目 的数量 然后创建继承自 List 的子类 Class Lis
  • 支持多种屏幕尺寸 - Android

    我将在 Android 中开发新的应用程序 此应用程序只能在纵向模式下运行 即使对于平板电脑也是如此 此外 手机和平板电脑上的用户界面和布局设计应该相似 我们无法改变平板电脑的布局设计 因为它有很大的使用面积 我们必须拉伸所有图像以匹配手机
  • 权限处理的模式/设计建议

    我们的 ASP NET Web 应用程序中有一个相当复杂的权限处理系统 用户可以对不同类型的对象拥有特定的权限 某些权限甚至打包到分配给用户的组 角色中 总而言之 这最终会导致相当复杂的混乱 为了确定用户是否可以执行 查看某些内容 您必须评
  • 真随机数生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 抱歉 这不是一个 真正的 问题 但我记得以前在这里看到过一篇关于随机随机化随机发生器以生成真正随机数的帖子 而不仅仅是伪随机数 如果我搜索它 我看不
  • 以编程方式确定 Excel 文件 (.xls) 是否包含宏

    有没有办法以编程方式确定 xls 是否包含宏 而无需在 Excel 中实际打开它 还有什么方法可以检查这些宏是用哪个证书 包括时间戳证书 签名的 再次不使用 Excel 我特别想知道当存在宏时 是否有任何字符串始终显示在 Excel 文件的
  • 在 Android 中取消已经打开的 toast

    我目前正在开始开发 Android 应用程序 并且一直在跟进本教程关于如何使用和改进 Google 地图应用程序 我已经成功地在屏幕上显示地图 触摸后我得到了一个位置的地址 通过反向地理编码 并显示了Toast 但这是我的问题 当您在地图上
  • 使用 DX10 的 D3D 图像

    是否可以将 DirectX 10 我正在使用 SlimDX 与 WPF 的 D3DImage 一起使用 我能找到的唯一示例和文档仅显示使用 DX9 表面 是的 您可以在 WPF 中通过 D3DImage 使用 DirectX 10 11 和
  • 使用 AJAX 获取 html 内容后向新元素添加侦听器的正确方法是什么? (jQuery、Javascript)

    我正在制作一些可以通过 AJAX 加载新设置页面的东西 我不确定将侦听器绑定到新内容页面中的这些元素的最有效方法是什么 这是我的想法 我可以创建一个比较文件路径的函数 对于每个条件 我将根据 AJAX 加载的页面将正确的侦听器应用于这些新元
  • 在 VS Code 终端(即 Windows Powershell)中编译时遇到问题

    当我右键单击 运行代码 并在用户设置中的终端中运行时 我收到这些错误 At line 1 char 63 c Users Josh Documents Programming Learning to Program g Exe The to
  • 如何在存储过程中调用C#函数

    SQL Server 2005 支持 CLR 因此这意味着我们可以在后端使用 CLR 那么如何做到这一点 我在 C 中有一些函数可以对日期时间变量进行一些复杂的操作 现在我想在 SP 中使用这些函数 首先 这是否可以做到 是的 可以在 SQ
  • 如何在 VBA 窗体上显示 Excel 的一部分

    我有一个 csv 格式的文件 从 A S 列 它有一些记录 例如表格 我的完整程序将插入 删除 删除 添加一些行 列和编辑单元格值等 我设法编写了我需要的所有操作的代码 现在我正在尝试将其与图形用户界面集成 我想要的是显示从 Ax1 到 V
  • 对 'GET_LIST' 的响应必须类似于 { data : [...] },但接收到的数据不是数组

    我正在尝试使用ra data simple rest 数据提供商 import React from react import Admin fetchUtils Resource from react admin import simple
  • Jenkins - 我如何将参数从上游传递到下游

    我有 3 个版本 A 是控制流程的主版本 B 另一个构建 C 将在B之后执行 我想向 A 添加一个字符串参数 以便用户手动输入一些字符串 但我不确定如何将此参数传递给 B 可以说这是我的构建流程 构建 B 构建 C 我不知道如何将参数传递给
  • 计算拦截向量

    我有 2 个对象 我将它们称为target and 拦截器 我知道目标的当前位置和速度 我知道拦截器的当前位置和飞行速度 由此 我现在需要知道的是 是否可能进行拦截 即同一时间点的同一位置 拦截弹需要沿着什么矢量飞行 拦截需要多长时间 即每
  • 在 SharedPreferences 中存储字符串数组

    我想知道是否可以在共享首选项中保存一个字符串数组 每次我们保存某个字符串时 我们都会将其存储在该数组中 例如 我有一个具有特定 ID 的位置列表 我想将其标记为收藏夹 理想的情况是 拥有一个数组并在该数组中保存某个位置 ID 我们称之为 L
  • Elixir:不同数量的函数重载

    有没有办法定义具有不同数量的重载函数 例如在 C 中我可以这样做 foo bar or foo bar baz 在 Elixir 中 唯一的方法是将它们放在单独的模块中 这很快就会变得混乱 有什么办法解决吗 编辑 我做了一个错误的假设 我看