问题标签 [method-signature]

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 投票
2 回答
3649 浏览

vb.net - 代表和 ParamArray - 解决方法建议?

一些预定义的方法在其签名中包含一个ParamArray 。但是,代表不能在其签名中包含 ParamArray。

问题:假设您希望为需要 ParamArray 的特定方法创建委托机制。你将如何解决这个限制?

编辑:为了清楚起见,假设您不能更改方法签名本身(预定义的方法,由某些第 3 方定义,无论是否是 Microsoft)。

EDIT2:这里真正的交易是保留语法糖,因为下面的代码确实有效,但消除了糖:

EDIT3:事实证明,Skeet 的解决方案也适用于创建包含 ParamArray 的事件和运算符。

0 投票
1 回答
267 浏览

.net - 为什么 .NET 4 中的类不是协变的?

可能重复:
为什么 C# 4.0 中的类没有通用差异?

作为一名新手程序员,我有几个关于 .NET 4 的变化的问题。与其说是它是如何工作的,不如说是为什么某些东西没有变化,以及其他人是否会觉得这很有用。

问题一:

我知道接口和委托在 .NET 4 中可以是协变/逆变的,但为什么不是类呢?所以,问题1:

这在某种程度上不安全吗?这不会有用吗?


问题2:

问题 2 源自问题 1,但可能更多地处理签名而不是方差。假设我有一个带有 MustOverride 成员的 MustInherit 类:

在派生类中,为什么不能重写 SomeClass 并返回一个 Derived Class Of BaseClass?这不安全吗?仅仅是签名不检查继承关系吗?

任何关于为什么在 .NET 4 中不允许这样做的见解将不胜感激。

0 投票
1 回答
1982 浏览

overriding - C# - 覆盖带有 ClassName 的方法签名?

有没有办法覆盖<T>与 ClassName 一起使用的抽象类的方法签名,这样我就可以通过引用传递对象而不重铸它?

例如,我有一堆对象管理器。我希望它们都包含一个 .Save(Object) 方法,该方法将根据对象状态(插入、更新、删除等)执行适当的保存操作。

我试图创建一个包含这些方法的基类:

我希望我继承的类使用这样的方法来定义方法:

我的问题是我无法指定<T>现在将是<Consumer>,并且通过将其保持在<T>我无法通过 ref 传递它

0 投票
2 回答
3798 浏览

c++ - C ++:继承重载的非虚拟方法和同名的虚拟方法会导致问题

我正在尝试将两个具有不同参数列表的同名方法继承到派生类。其中一个是虚拟的并在派生类中被覆盖,另一个是非虚​​拟的。这样做,我在尝试从派生类对象访问基类的非虚拟方法时遇到编译错误。

这是代码片段

这会产生以下编译错误:

错误:没有匹配函数调用'Deriv::f()'<br /> 注意:候选者是:virtual void Deriv::f(int)

我不是 C++ 方面的专家,但直到现在我认为成员方法可以通过它们的签名完全区分的假设是正确的。因此,非虚拟方法 Base::f() 不应被覆盖并应保持可访问性。我错了吗?

以下是一些有趣的/附加的评论:

    - 重写方法 Deriv::f(int arg) 也可以是非虚拟的;错误以任何一种方式发生
    - 错误消失/可以规避......
      ...通过将 Deriv 对象转换为 Base 类
      ...当不覆盖 Deriv 中的 Base::f(int arg) 时
      ...通过添加命令“Base::f;” 到 Deriv 的公共部分

所以,既然我已经知道如何避免这个编译错误,我主要感兴趣的是为什么会发生这个错误!

0 投票
2 回答
121 浏览

java - 我可以有一个键入“这个类”的方法参数吗?

我想在接口的方法签名中有一个“this class”类型的参数,以便任何实现它的类(例如MyClass,实现它的类)都有一个带有 type 参数的方法MyClass

pre>public class MyClass implements MyInterface { // has to reference this class in the implementation public MyClass myMethod(MyClass other){ ... } } 这可能吗,还是我应该将参数与接口绑定并让每个实现检查它?

0 投票
4 回答
1494 浏览

jquery - 为什么jQuery的回调参数不一致?

jQuery 中的一个常见模式是接受一个回调的方法,该回调传递一个数组的元素及其在该数组中的索引。然而,哪个参数首先出现似乎完全随机。例如,来自http://api.jquery.com的 jQuery 文档:

  • jQuery.each( collection, callback(indexInArray, valueOfElement) )
  • .each( function(index, Element) )
  • jQuery.map( array, callback(elementOfArray, indexInArray) )
  • .map( callback(index, domElement) )
  • jQuery.grep( array, function(elementOfArray, indexInArray), [ invert ] )
  • .filter( function(index) )

在三种情况下(jQuery.each, .each, .map),索引排在第一位。在另外两个 ( jQuery.grep, jQuery.map) 中,元素排在第一位。我知道现在已经设置了 api,但对我来说这似乎是一个严重的不一致。

是否有我遗漏的模式或者这只是随机的?应该解决这个问题还是我应该闭嘴并记住它们?

0 投票
4 回答
188 浏览

php - 当有很多要发送时,将值传递给函数的最佳方法是什么?

当您必须将许多值传递给函数并且其中一些可能是可选的时,定义方法签名的最佳方法是什么。将来,可能我必须传递更多变量或减去一些传递给函数的值。

例如:(电话和地址是可选的)

或者

0 投票
1 回答
289 浏览

c# - 扩展泛型类的类中的方法签名

如果我有这样的通用类:

扩展如下:

如果 FooRepository 有一个名为 的方法Greeting(Foo foo),该方法是否与基类方法具有相同的签名(即隐藏或覆盖它),还是被认为是独立的?

老实说,我有点困惑。

0 投票
2 回答
384 浏览

java - Java 如何为方法生成签名?

我有一个带有静态最终方法 getAll 的 Java 类:

现在我想将 null 作为 where 语句的值提交,以便稍后在代码中忽略它。无论如何,在这种方法的测试用例中,我有:

然后又给了我一个NoSuchMethodError。我不知道它为什么这样做。我唯一能想象的是,我提交的 null 与上述方法的签名不匹配。但是我该如何克服呢?我已经考虑过重载。但这只会以重写大部分代码而告终。至少当我这样做的时候,我是怎么想的。

对此有何建议?

菲尔

PS这是我得到的堆栈跟踪:

0 投票
2 回答
2053 浏览

java - 如何从 jar 文件中获取函数 sinatures?

在 Eclipse 或 NetBeans 中,当您“控制 + 单击”进入一个函数时,您至少可以看到它的整个签名,即使它位于 jar 文件中。

我想知道是否可以编写一个工具来从 jar 文件中提取所有函数签名。有没有这方面的API?

我知道jDepend似乎为此提供了功能。但是,我相信有一些更通用的方法可以做到这一点。