问题标签 [shadowing]

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 回答
41 浏览

java - 绕过现场阴影

对于一个特定的程序,我基本上有一个带有几个不同子类的抽象超类。但是,如下图所示,我遇到了场阴影问题。

现在我创建子类,每个子类都有自己的“名称”。

但是,创建子类的实例,然后调用继承的方法 getName() 将由于字段阴影而产生 null。

有没有一种简单的方法可以避免这个问题,并允许每个子类都有一个可以被继承方法访问的唯一字段?

0 投票
2 回答
346 浏览

visual-studio - 有没有办法在 Visual Studio 中对 F# 中的阴影值发出警告?

对我来说,隐藏现有值,如下所述:

阴影和嵌套函数
在 F# 中不可变
f# 重复定义
FSharp 以获得乐趣和利润评论

似乎违背了使 F# 如此强大的不变性和类型安全的概念。F# 中的阴影与 C# 中的工作方式不同。我花了很长时间才发现我的代码中的一个错误是由于无意中在同一范围内隐藏了一个名称。有没有办法让编译器警告 VS 中的阴影值?

我知道在某些情况下它可能很有用。例如Checked Aritmetics

0 投票
1 回答
229 浏览

c++ - 如何通过派生类实现等效的类型阴影?

我想写如下内容:

并且为了bar()表现出多态性。但是 - 这在 C++ 中是不可能的。我应该怎么做?

0 投票
3 回答
1488 浏览

python - 使用修改后的副本隐藏全局变量

请注意:这不是关于如何更改函数体内的全局变量的问题。我理解global关键字。

我的脚本有一堆全局配置变量。我想编写一个函数来隐藏本地命名空间中的一个全局变量(modified_procedure()下面调用)并调用另一个引用配置变量的函数。IE,

这失败了,因为PARAMETER发生在的主体中,modified_procedure()所以解释器认为它是一个局部变量,而不是在全局命名空间中查找它。我不想改变全局变量PARAMETER;我正在尝试将其隐藏在modified_procedure()的名称空间中。

我可以想到几个不方便的解决方案:

  • OOPify 脚本,以便配置变量是对象属性,我可以创建一个新的子类procedure()
  • 在返回结果之前使用globalinmodified_procedure()修改PARAMETER然后恢复它procedure()

我可以通过阴影来做到这一点PARAMETER吗?如果是这样,怎么做?

0 投票
0 回答
103 浏览

javascript - 可能的角度范围阴影无法解释

我尝试了几种不同的方法或包装一个简单的 jquery-ui 滑块,其中第一个是:

我认为这不起作用,因为阴影,所以我选择传递对对象的引用及其属性之一的字符串值:

在这两种情况下,控制台都会显示预期值,但模型不会更新。通常这意味着值在范围内被遮蔽,这就是我将其更改为第二个版本的原因,但这也不起作用。有任何想法吗?

0 投票
2 回答
2103 浏览

java - 访问本地类中的阴影变量

我是java新手,我对下面的例子感到困惑

为什么我无法在第 8 行使用“this”关键字访问 inTestOne() 方法中的阴影变量

0 投票
1 回答
956 浏览

java - 如何从超类中的方法访问(隐藏)子类中的成员变量?

如果有人不理解这个问题,请告诉我。我尽力提出下面的问题。我在父类中有一个通用的方法来生成模式。为了重用性,我想在父类下保留这个方法。

在方法内部,我使用了几个变量。所以我认为最好将对象作为参数传递给方法generatePattern。但是由于变量不能被覆盖,我怎样才能使用这些子类中的各个变量呢?除了使用子类之外,java中的任何其他功能?在这种情况下,“通用类型”作为参数是否有效?

我可以将上面的 AscendSubClass 或 DescendSubClass 传递给 generatePattern()。在这个方法中,我需要使用变量 var1、values 和许多其他子类的变量。这些变量类型相同,名称相同,但值不同,取决于子类。我现在如何在 generatePattern() 中引用这些变量,以便该方法不会改变?可以通过将变量作为方法的参数或通过 if/else 语句来实现这一点,但是我有几个变量要传递,这很不方便。

0 投票
1 回答
797 浏览

c# - 使用基本模型类而不在 asp.net mvc 中修改它

假设我通过 Entity Framework 创建了一些模型,其中之一称为 Paper_Results。这是该类的外观:

我想像使用域模型一样使用这个类。现在假设我创建了一个派生自 Paper_Results 并添加了接口的类

现在,当我创建 ViewModel 时,我将使用派生类:

我知道我应该对非负整数使用 uint 而不是 int,但我只是想在代码中添加更多数据注释。我要问的是从 Paper_Result 类派生的最佳 OOP 技术是什么,这样我根本不需要修改它。原因是如果我创建一个新的解决方案和/或项目,我不想在使用 Entity Framework 自动重新生成它时对其进行任何修改。我应该使用阴影吗?还是派生类中的new关键字?或者你们还有其他更好的想法吗?

自动生成的 EF 模型在其方法中不包含“虚拟”,这就是我提出阴影和新关键字的原因。

0 投票
2 回答
1355 浏览

c++ - 派生类不从基类继承重载方法

我想在基类中有一个方法调用将在派生类中实现的纯虚拟方法。但是,派生类似乎没有继承基类的无参数方法。我究竟做错了什么?编译器是 MSVC12。

错误 C2660:“Derived::load”:函数不采用 0 个参数

这是一个完整的示例(由于错误而无法编译):

0 投票
1 回答
777 浏览

r - 包 TTR 中的 ROC 函数抛出错误:未使用的参数 (na.pad=na.pad)

下面的代码一直有效,直到最近。

系统返回以下错误:

任何建议如何让上述工作再次?

(出现此错误后,所有软件包均已更新)

回溯下方: