问题标签 [extending-classes]

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 投票
5 回答
2298 浏览

java - 以子类为参数重载方法,但将方法称为超类

我有一个抽象类Animal,有两个扩展类,DogCat.

在另一个类中,我有一个ArrayList<Animal> animals包含Cat和的实例Dog

在带有 的类中ArrayList<Animal>,我希望能够使用或作为参数重载方法doSomething()Dog dCat c仍然能够从 Animals 的 ArrayList 中调用它们。如下:

从本质上讲,每种方法都充当type该方法接收动物的“选择器”。

如上所述尝试时,出现以下编译错误:

错误:找不到适合 doSomething(Animal) 的方法

我知道我可以使用类似的东西instanceOfor a.getClass().equals(type),但我已经读到这是不好的做法。这个问题与其他问题略有不同,因为我想要两个单独的方法,每个方法都有不同的参数。

编辑:我将避免使用访问者模式,因为我认为它不太适合我的实际实现。将 doSomething() 方法移动到每个类中,并进行重构以确保这具有逻辑意义(每个类都执行它应该负责的操作)。谢谢。

0 投票
3 回答
196 浏览

c++ - 是否有任何理由不扩展 std::set 以添加下标运算符?

std::set用来存储一个类的唯一实例。std::set没有重载的下标运算符,因此您不能这样做set[0]

我找到了一种方法:

但是,我发现一遍又一遍地复制该代码很单调。std::set所以我决定只扩展( class sset) 并重载其中的下标运算符会更方便。

我实现了预期的行为,但我突然想到标准不包含下标运算符一定是有原因的。当然不只是懒惰。

这样做是否有任何预先知道的缺点或可能的未来问题?

0 投票
1 回答
62 浏览

c++ - 扩展一个类,委托操作符和赋值?

简而言之......在我的应用程序中,我们使用boost::filesystem::path了很多。它通常工作得很好,除非有人决定很可爱并在 Windows 中引用非 unicode 文件名(例如,由于某种原因我无法理解,有人有 Shift-JIS 文件名)。

俗话说,无知是幸福,在我看来,我想我可以通过做一些类似的事情来解决这个问题(顺便说一句,这是否有意义?):

当然,我并没有考虑到所有各种分配和此类运算符。

假设我上面写的内容是有意义的并且没有损坏代码......是否可以将这种方法扩展到其他版本的构造函数、赋值运算符等?

0 投票
1 回答
61 浏览

python - 如何从 pandas Series 类继承以简化 Series 类型的子集?

我想创建一个新类,允许我创建受限制的 pandas Series 对象,因此用户只需要输入开始日期和周期数即可初始化系列。我还希望能够替换该系列中给定日期的值。我在下面进行了尝试,但我得到了

AttributeError:无法设置属性

当我尝试分配 Series.values 时,如下所示。如何通过从这样的 Series 继承来创建我的类?

0 投票
1 回答
339 浏览

laravel-5 - 如何在 laravel 5.8 应用程序中扩展 laravel 包?

我是 Laravel 的新手,如果我更新包,我将不胜感激描述如何扩展位于供应商文件夹中的 Laravel 包并且不会受到影响的任何帮助。

0 投票
0 回答
40 浏览

javascript - React 组件中的重写方法 - 一种反模式,但我该怎么做呢?

相信我,如果我有其他选择,我会接受,但我无能为力。

我正在为一家大公司工作,该公司已经拥有一个专门用于授权的整个图书馆。然而,授权在很大程度上是有效的,它的工作方式是将您的应用程序放在渲染函数中的授权组件之间,就像这样。您不能更改授权组件的代码。

您还应该使用该库自己的 Redux 存储,并且您可以向该库添加减速器,但不能添加中间件。您不能触摸此代码。

这就是事情变得棘手的地方——而且有点……非常规。AuthorizedComponent正在进行 API 调用以获取 JWT 令牌,到目前为止,一切都很好,但它没有将 jwt 令牌存储在内存、会话存储或本地存储中的任何位置。相反,它将其存储在不可公开访问的内部状态中。但是,我可以查看源代码。

需要该 JWT 令牌进行 API 调用以构建此新功能。

我想做的是:

我知道这是一种反模式。我知道你不应该这样做。但是我的时间不多了,只有两个错误是正确的方法。

0 投票
1 回答
468 浏览

java - 创建tasks[]任务数组

我当前的问题是,我被分配创建一个程序,该程序应在私有字段中分配 tasks[] 一个任务数组。然后在构造函数中创建 task[] 数组,赋予它 INITIAL_CAPAITY 的容量,并将 numTasks 设置为零。

我是新手,很困惑我可以解决这个问题

我曾尝试在构造函数中声明它,但没有运气。

任务.java

HoneyDoList.java

我的预期结果是能够通过 honeydo 类打印出列表。添加一些其他方法后,我需要对代码进行更多操作。

0 投票
1 回答
37 浏览

javascript - 可以将成员函数添加到 JavaScript 中的 Array 类而不显示在 for-in 循环中吗?

在我正在处理的一些代码中,我创建了一个仅应用于数组的 JavaScript 函数,我想我会尝试将它添加为成员函数。

我像这样添加它:

在大多数情况下效果很好。我遇到的问题是for-in循环。它在循环中包含该函数。如果我然后输入这个片段:

然后输出如下:

那么有没有办法做到这一点,但避免它显示在 for-in 循环中?

0 投票
1 回答
512 浏览

python - 扩展 openpyxl 工作簿类

我想使用自定义方法扩展 openpyxl 工作簿类的现有功能。我知道通常我会简单地通过基于原始类定义我自己的类来做到这一点

到目前为止一切顺利,但我现在的问题是我获取 Excel 工作簿的方式是调用load_workbook(file),它不是工作簿类的一部分,但返回一个完全实例化的 Workbook 对象。另一方面,Workbook 类似乎没有提供一种基于现有对象实例化新对象的方法。所以问题是:我如何扩展一个类

  • 是另一个函数的结果,并且
  • 不提供基于现有对象初始化或复制自身的方法

编辑:更具体地说,我加载了一个现有的工作簿,并想添加一个在给定范围和工作表内搜索给定值的方法。我希望能够搜索完全匹配或包含搜索词的单元格值。现在我可以使用 openpyxl 中的现有函数来完成所有这些工作,但我想做的是将它添加到 Workbook 类中,因为这似乎是这种函数最自然的地方。

尽管有这个更具体的问题描述,但我仍然对该问题的一般方法感到好奇。即,即使有一个工作簿或工作表函数可以执行类似的操作,原始问题仍然存在。

0 投票
1 回答
144 浏览

typescript - 了解围绕类型断言/强制转换的 Typescript 语法

我是 TypeScript 的新手。

我一直在寻找优雅的模式来使用 TypeScript 定义 Mongoose 模式。我一直在研究 Nicholas Mordecai 的一篇文章:

https://know-thy-code.com/mongoose-schemas-models-typescript/

这是一个非常有帮助的(感谢尼古拉斯)!尽管有一些我无法深入了解的编码约定。第一个与以下代码块有关...

让我困惑的具体一点是:

当然,我什至看不到生成的 js 代码,因为接口没有被转译。

ContactModel 扩展了 IContact,但仅在 IContact 被重新断言/强制转换(从 Mongoose 文档)到 Mongoose 模型之后。我在这里假设正确吗?让我难过的只是代码约定......

实际上做到了/实现了!

第二个问题与以下代码有关,Nicholas 已将其包含在与上述相同的 ts 文件中:

我希望在这里得到帮助的一点是评估者获取方法......

我了解获取评估者的原则,但我不确定“model():”之后的代码是否返回 this._model 的函数或实例(或两者)?

此外,在单独的 ts 控制器文件中,Nicholas 使用以下两段代码来使用上述...

注意。this._models 被定义为“private _models: IModels;”

我真的很想具体详细地了解这段代码在做什么!我的解释是正在创建一个新的 Contact 对象,然后它使用 get 评估器方法 model(),该方法返回一个 IContact 接口(转换/断言为模型)?

非常感谢任何帮助!

非常感谢。