为什么 dart 不允许方法重载?

2024-05-09

我尝试在一些 dart 代码中使用方法重载,并很快了解到 dart 中不提供重载。

我的问题是:为什么不提供,推荐的替代方案是什么?是否有标准的命名约定,因为执行相同操作但具有不同输入的方法必须具有不同的名称?

使用命名参数然后检查调用者是否提供了足够的信息来完成计算是标准的吗?

假设我有一个方法可以返回某人一年赚了多少钱,称为yearlyIncome.

在Java中,我会创建一个像这样的方法

double yearlyIncome(double hourlyRate, double hoursWorkedPerYear)

也许还有像这样的方法

double yearlyIncome(double monthlyRate, int monthsWorkedPerYear)

等等。它们都用于计算相同的事物,但输入不同。在 Dart 中执行此操作的最佳标准化方法是什么?

预先非常感谢。


Dart 根本不支持函数重载。 函数重载需要静态类型。 Dart 的核心是一种动态类型语言。

您可以为方法使用不同的名称或可选的命名或未命名参数

// optional unnamed
void foo(int a, [String b]);

foo(5);
foo(5, 'bar');

// optional named
void foo(int a, {String b});

foo(5);
foo(5, b :'bar');

可选参数也可以有默认值。可选的命名参数和未命名参数不能一起使用(单个函数只能使用其中之一) 对于构造函数,您可以使用命名构造函数作为替代方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 dart 不允许方法重载? 的相关文章

随机推荐

  • 使用 Visual Studio 2012 在 wpf 工具包中找不到 AutoCompleteBox

    这确实是一个想要的功能 AutoCompleteBox 显然不是 AutoCompleteComboBox 但是 Visual Studio 2012 找不到 AutoCompleteBox 控件 但我没有在早期版本的vs中尝试过 所以这可
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 起订量要求?违背了目的?

    是否需要虚拟化您想要模拟的所有属性访问器就违背了模拟的目的 我的意思是 如果我必须修改我的对象并虚拟化我想要模拟的每个访问器 我难道不能继承我的类并自己模拟它吗 你的问题非常有效 但如果你仔细想想 没有其他方法可以模拟课程 如果你采用一个接
  • SharpZipLib - 将文件夹/目录添加到 zip 存档

    通过示例 我很好地掌握了如何提取 zip 文件 几乎在每个示例中 识别 ZipEntry 是否为目录的方法如下 string directoryName Path GetDirectoryName theEntry Name string
  • 在 JSP 中对表单操作使用相对路径

    如何在表单操作中使用相对路径
  • 将信息框添加到通过 Google 地图绘制的圆圈的右边缘

    试图弄清楚如何将 信息框 附加 到 Google 地图 v3 中绘制的圆圈的左边缘 这是我到目前为止所拥有的 http jsfiddle net a1aq9ey8 6 http jsfiddle net a1aq9ey8 6 如果放大 缩小
  • ScrollView 只能承载一个直接子级,但它只有一个

    每当我开始活动时 我都会收到此错误 这是完整的堆栈跟踪 Process com example PID 28799 java lang RuntimeException Unable to start activity ComponentI
  • 这个特定的 ReactJs 代码是如何执行的初学者问题?

    我是初学者 正在阅读大量代码 现在我想知道下面的代码我明白这段代码在做什么 我需要澄清的是代码流程 当我运行它时 我看到图像正在加载 React 是从上到下执行代码吗 占位符图像异步获得正确的图像 但会App如果需要时间 组件会开始渲染但没
  • Accept() 是线程安全的吗?

    我目前正在用 C 语言为我正在做的课程编写一个简单的网络服务器 我们的一项要求是实现一个线程池来使用 pthread 处理连接 我知道我将如何粗略地执行此操作 在主线程中调用accept并将文件描述符传递给freee线程 但是我的朋友建议了
  • 首选项活动中的广告“没有足够的空间来显示广告!需要:<480, 75>,拥有:<432, 1073741823>”

    我试图在偏好活动中展示广告 但它从未出现 Logcat 始终显示消息 没有足够的空间来显示广告 想要 有 这就是我制作广告的方式 我对广告有自定义偏好 public class AdmobPreference extends Prefere
  • Namenode高可用客户端请求

    谁能告诉我 如果我使用java应用程序请求一些文件上传 下载操作到带有Namenode HA设置的HDFS 这个请求首先去哪里 我的意思是客户端如何知道哪个名称节点处于活动状态 如果您提供一些工作流程类型图或详细解释请求步骤 从开始到结束
  • GC.Add MemoryPressure() 如何知道要向哪个对象添加内存压力?

    我最近需要使用GC 添加内存压力 http msdn microsoft com en us library system gc addmemorypressure aspx令我感到奇怪的是 它不接受添加内存压力的对象作为参数 我认为因为它
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O
  • 创建用于 Android 库分发的 JAR

    我正在开发一个 android 库 并希望导出一个 JAR 文件 我可以分发该文件供其他人在他们的应用程序中使用 我不想分发源代码 因为它包含有关发布到我的网络服务器的详细信息 我尝试使用在 bin 目录中创建的 JAR 文件并将该 jar
  • 如何在intelliJ idea中创建java包的jar

    我需要创建一个包含模块内部包中已编译类的 jar 我有一个 jar 文件 它实际上是模块内部的一个包 我需要重新创建它 我可以创建整个模块的 jar 但无法创建包的 jar 文件 我怎样才能按照想法做到这一点 Intellij IDEA 2
  • “TryParse / Parse like”模式:实现它的最佳方法是什么

    这个问题是来自的后续问题如何指示方法不成功 https stackoverflow com questions 161822 how to indicate that a method was unsuccessful xxx Tryxxx
  • 解析嵌套括号内包含的值

    我只是在开玩笑 奇怪地发现在简单的递归函数中解析嵌套括号有点棘手 例如 如果程序的目的是查找用户详细信息 它可能来自 name surname age to Bob Builder age 然后到Bob Builder 20 这是一个用于在
  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • SASS/Compass可以将foo.scss编译为foo.min.css和foo.dbg.css吗?

    我想整理一套 scss文件为不同的文件名 在开发中 我想编译例如 foo scss to foo dbg css 未缩小并带有评论 在生产中 我想要例如 foo min css 缩小 有没有办法告诉 SASS Compass 使用什么作为目
  • 为什么 dart 不允许方法重载?

    我尝试在一些 dart 代码中使用方法重载 并很快了解到 dart 中不提供重载 我的问题是 为什么不提供 推荐的替代方案是什么 是否有标准的命名约定 因为执行相同操作但具有不同输入的方法必须具有不同的名称 使用命名参数然后检查调用者是否提