问题标签 [overloading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
29998 浏览

python - 为什么在类上定义 __getitem__ 使其在 python 中可迭代?

为什么在类上定义 __getitem__ 使其可迭代?

例如,如果我写:

我得到输出:

我真的希望看到“for k in cb:”返回错误

0 投票
2 回答
1743 浏览

c# - 重载将不同类型的泛型列表作为参数的方法

如何重载将具有不同类型的通用列表作为参数的方法?

例如:

我有两种方法:

有没有办法可以将这两种方法合二为一?

0 投票
10 回答
17171 浏览

c# - 方法重载返回值

在 C# 中,我需要能够定义一个方法,但让它返回一个或两个返回类型。当我尝试这样做时,编译器给了我一个错误,但为什么它不够聪明,无法知道我需要调用哪个方法?

为什么编译器会阻止我拥有两个具有不同返回类型的函数?

0 投票
3 回答
2289 浏览

c++ - 如何编写一个接受每个类和类模板的 C++ 模板?

预先警告:这个问题似乎比实际更明显。

我想编写一个可以接受任何具体类或模板类作为模板参数的模板。这可能看起来没用,因为如果不知道传入的 T 是否被模板化,您将不知道如何使用它。我想要这个的原因是我可以声明一个没有定义的通用模板,然后用户可以专门化。因为用户专门研究它,所以他们总是知道他们正在处理的类型。但是用户不能在没有首先声明模板的情况下专门化模板。

你可以这样做:

但是如果你传入一个模板化的 T 就行不通了,例如myclass<std::vector>就行不通了。那么我们试试这个:

这可能是正确的轨道,但它不会按原样工作,因为类模板不能重载。所以让我们把它切换到函数模板,它可以是:

亲爱的,所以我们做对了吗?好吧,模板模板参数可能有不同数量的参数,所以我们也需要考虑到这一点。

丑陋,但Boost 预处理器库可以为我们生成此代码(并且在 C++0x 中将添加对可变参数模板的支持,因此这种丑陋只是暂时的)。但是我们还是忘记了一个案子!如果 T 的一个参数不是一个类,而是一个常量整数怎么办。让我们尝试支持这一点:

哦哦。鉴于任何常量类型都可以传入模板,以任意数量与类参数混合,KABLOOEY 组合爆炸。只是为了让事情变得更加困难,如果 T 的任何参数本身就是模板怎么办?

0 投票
2 回答
2568 浏览

c# - 方法的通用接口重载?

有没有一种好的、通用的方法可以在不使用第二种方法或大量强制转换的情况下执行以下操作 - 我想保持 API 尽可能轻,而且在我看来 OO 明智:

谢谢

0 投票
4 回答
259 浏览

c++ - 智能指针可以选择性地隐藏或重定向对它们包装的对象的函数调用吗?

我正在做一个项目,其中某些对象被引用计数——这是一个与 COM 非常相似的设置。无论如何,我们的项目确实有智能指针,可以减少为这些对象显式调用 Add() 和 Release() 的需要。问题是有时,开发人员仍然使用智能指针调用 Release()。

我正在寻找的是一种从智能指针调用 Release() 创建编译时或运行时错误的方法。编译时间对我来说似乎是不可能的。我以为我有一个运行时解决方案(见下面的代码),但它也不能完全编译。显然,使用 operator->() 后不允许隐式转换。

无论如何,任何人都可以想出一种方法来完成我想要完成的事情吗?

非常感谢您的帮助!

凯文

0 投票
5 回答
3925 浏览

c# - C# 泛型重载 - 编译器无法确定正确的调用

我不明白为什么编译器无法解决要在此处使用的正确重载。(下面的代码)只有一个版本的 Add() 是合适的——BigFoo 是一个 IFoo,并且不实现 IEnumerable,其中 T 是一个 IFoo。但它坚持报告模棱两可。有任何想法吗?我尝试添加第二个泛型类型参数 - 添加 where T : IFoo where U : IEnumerable。但是即使合法使用,过载也会被完全忽略。

我知道我可以通过强制转换和指定泛型类型参数来解决这个问题,但那时我已经打败了重载的目的。您可能会质疑重载,但语义对我来说是正确的——我在课堂上实现的行为是让 Add() 都将对象批发添加为集合中的单个条目。(第二个 Add() 不应该是 AddRange()。)

0 投票
5 回答
2191 浏览

c# - 使用反射区分重载方法的泛型和非泛型版本

我在使用反射来区分泛型类上的非泛型和泛型方法时遇到了一些麻烦。这是我正在使用的测试用例:

0 投票
1 回答
2329 浏览

c# - C# 4.0 中使用动态类型的重载解决方案

我还没有访问 C# 4.0 预览版的权限。但我很好奇,C# 4.0 运行时在以下情况下调用重载方法时会做什么。它是否解决了通用重载......或专门的重载。

0 投票
5 回答
9201 浏览

c++ - 使用模板 C++ 的 operator() 重载

我有一个简单的类,我想为其重载运算符,如下所示

而我拥有的其他地方

有人可以帮我解决这个错误,非常感谢。谢谢你。

编辑:

这与运算符()有关,例如,如果我将函数替换为

有用。感谢所有的回应。