问题标签 [narrowing]

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

c++11 - 使用模板参数缩小转换范围 (MSVC14)

升级到 MSVC 2015(从 MSVC 2013)后,我开始收到以下代码的警告:

产生以下(带Constant<0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF>()):

__m128i联合在内部定义emmintrin.h,作为具有几种不同类型的数组的联合,代表一个 MMX 寄存器。要列出初始化结构,您必须使用联合中声明的第一个类型,在本例中为__int8. 根据 MSVC 2013 文档(https://msdn.microsoft.com/en-us/library/29dh1w7z.aspx),__int8映射到char,我认为 MSVC 2015 也是如此。所以,警告似乎是有效的,因为即使模板参数是非类型的,也不是所有的字段char在转换后都适合类型。

我的问题是为什么 MSVC 2013 没有对此发出警告(因为它似乎是核心 c++11 问题)?另外,是否有解决警告的“好”方法?

0 投票
2 回答
2680 浏览

java - 可选<>和返回类型缩小

在 Java < 8 中,返回“不安全”对象(对象或 null),我能够在子类中专门化返回类型:

在 Java 8 中,如果我想让我的 API “更安全”,我应该返回Optional<A>而不是“原始” A

但不编译!因为Optional<B>不是 的子类Optional<A>

我应该如何解决这个问题?

0 投票
2 回答
697 浏览

java - java中的隐式缩小规则

我不相信 java 编译器在上述代码的第三行中应用的缩小规则。

请帮助我理解这个缩小规则背后的逻辑。

0 投票
3 回答
1834 浏览

java - 为什么最终变量不总是一个常量表达式?

在下面的代码中:

为什么我会收到此错误?最终变量不是a编译时常量表达式,因此在赋值期间隐式缩小为字节吗?

换句话说,上面的代码不等同于:

0 投票
1 回答
628 浏览

c++ - 在初始化列表中初始化联合成员而不缩小

在下面的代码中,

为什么初始化程序列表中的第一个初始化程序BlitData会出现以下错误:

非常量表达式不能从类型col24(aka unsigned long) 缩小到int初始值设定项列表中

为什么编译器尝试使用类型为的初始化程序来初始化 的int成员,而不是使用它来初始化成员?unioncol24col24

编译器建议 I是tostatic_cast的结果,但这可能会导致不必要的缩小。MakeRGB24int

如何Luminance使用初始化列表中的结果正确初始化成员MakeRGB24

编辑: blitdata应该保留 POD。

0 投票
2 回答
1749 浏览

c++ - 为什么与花括号分隔的初始化程序一起使用的缩小转换不会导致错误?

我在 The C++ Programming Language,第 4 版中了解了花括号分隔的初始化程序。> 第 2 章:C++ 之旅:基础知识。

我从下面的书中引用。

= 形式是传统的,可以追溯到 C,但如果有疑问,请使用通用的 {} -list 形式(第 6.3.5.2 节)。如果不出意外,它可以使您免于丢失信息的转换(缩小转换;§10.5):

但是,我无法重现这些结果。

我有以下代码。

当我编译并运行它时,我没有收到任何错误。我收到警告std=c++11但没有错误。

此外,警告仅针对第二次分配,但没有针对第三次分配的警告。这似乎表明这=并不是书中提到的真正多余的。如果=是多余的,则第二个和第三个分配都会产生警告,或者两者都不会产生警告。然后我用-std=c++11标志编译它们。

仍然没有错误。只有警告。尽管在这种情况下,第二个和第三个分配在生成警告方面表现相同。

所以我的问题是:虽然书中提到第二个和第三个赋值是错误的,为什么这段代码没有编译失败?

0 投票
2 回答
110 浏览

javascript - 需要 JQuery 或 JavaScript 才能将 .contains() 与 && 逻辑一起使用

我正在尝试通过使用给定的关键字按钮在其他静态项目列表上进行过滤来构建一个简单的缩小范围。

这些按钮在一个无序列表中,当被选中时,将类“.selected-tag-button”添加到它们中。

这些项目是具有类“.item”的div,并在它们处于活动状态时获得类“.included-item”。div 内部是另一个 UL,其中包含与按钮上的文本节点匹配的关键字的列表项。

现在它正在工作,除了使用仅包含单击按钮的关键字的“buttonName”之外,我想使用包含所有选定关键字的数组的“buttonArray”。

我想我需要某种功能,但我不知道从哪里开始。如果选择了多个,我希望结果仅限于包含所有选定关键词的项目。我能够弄清楚的所有解决方案都将返回包含数组中任何关键字的 div。

0 投票
1 回答
142 浏览

c++ - C++ 标准为缩小从 double 到 int 的转换提供了哪些保证?

C++ 标准为缩小从 double 类型到 int 类型的转换提供了哪些保证?它是否与Q31328190中解释的 Java 相同:

0 投票
1 回答
1168 浏览

c++ - C ++:使用花括号来防止分配期间变窄

我熟悉使用花括号/初始化器列表来防止在初始化变量时变窄,但是在为变量赋值时使用它也是一种好习惯吗?

例如

是否有理由不使用花括号进行赋值?

0 投票
1 回答
77 浏览

c# - 如何在 C# 中将列表缩小到最大数量的相同项目

假设我在一个名为“array”的数组中有这个列表:

我想用 C# 将它缩小到一个列表中最多两个相同数字的列表,所以它看起来像这样:

我试图使用'GroupBy':

但我不确定如何只考虑点之后的内容而不是整个项目