问题标签 [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 投票
4 回答
7048 浏览

c++ - 声明具有两种类型的变量:“int char”

我是 C++ 初学者,正在阅读Bjarne Stroustrup 的 Programming: Principles and Practice Using C++

3.9.2 不安全的转换部分,作者提到

当初始化器是整数文字时,编译器可以检查实际值并接受不意味着缩小的值:

我对这个声明感到困惑。它使用两种类型(intchar)。我以前从未在 Java 和 Swift 中看到过这样的声明(我比较熟悉的两种语言)。这是拼写错误还是有效的 C++ 语法?

0 投票
1 回答
40 浏览

typescript - 有没有办法通过检查函数来实现类型缩小?

我知道,如果我有x instanceof B这种情况,它会起作用。但是我可以通过isB()吗?

0 投票
1 回答
218 浏览

emacs - Emacs 缩小正则表达式

M-x narrow-to-line和之类的功能M-x narrow-to-page。哪些例程可以帮助我实现不存在的 Mx 缩小正则表达式的功能?

谢谢。

0 投票
1 回答
324 浏览

c++ - 为什么在将浮点数转换为字符时,C++ 不显示缩小转换错误?

使用编译此代码g++ -std=c++17 -Wall -pedantic main.cpp不会产生任何警告:

它不应该产生缩小误差吗?

0 投票
0 回答
83 浏览

python - 缩小或过滤时,如何使用 django-haystack 在 facet_counts() 中包含计数为 0 的构面?

我正在使用 django-haystack 和 elasticsearch。我想在网站上展示运动会。现在我有两个方面;运动和训练水平。它们都是一个复选框列表,并且是“或”导向的,这意味着可以选择多个。

例如,有 3 个训练选项,每个选项有 4 种不同的训练。所有的篮球训练都是针对初学者的,所有的足球和舞蹈训练都是针对高级的。这将导致以下结果:

训练选项:篮球(4)、足球(4)、舞蹈(4)

培训级别:初级 (4)、高级 (8)

如果我单击篮球,则会显示以下结果:

篮球 (3) , 足球 (3), 舞蹈 (3)

初学者 (3)

在这种情况下,先进的被排除在外。我想要的是:

篮球 (3) , 足球 (3), 舞蹈 (3)

初级 (3), 高级 (0)

我使用以下代码:

如果我用 sqs.filter 替换 sqs.narrow ,也会发生同样的情况。有谁知道我如何在使用构面过滤时包含 0 的计数?

谢谢!

0 投票
2 回答
780 浏览

typescript - 使用类型保护缩小函数返回类型

我有一个 TypeScript 函数,它解析一些 JSON 并通过类型保护运行它以确保数据有效,以便编译时代码的其余部分知道它正在处理一个实际遵守预期接口的对象。

但是,我很难让 TypeScript 强制执行类型保护。显然JSON.parse返回any,它可以分配给任何其他类型,因此会检查,即使我指定了非any返回类型。

TypeScript Playground 链接

选项 3 对我有用,但它使用的建议 JSON 类型仍有争议,并且仍然将责任放在实现者身上(他们可以很容易地根本不使用类型保护,并且仍然认为他们遵守接口)。

看来JSON.parse返回any是我的问题的根源。我已经在strict模式下运行,但它似乎仍然允许将显式键入的内容any扩展为函数的显式返回类型。

有没有另一种方法告诉 TypeScript 函数的返回值必须是它实现的接口中指定的返回类型,而不是any

0 投票
4 回答
3190 浏览

c++ - 是否有“安全”的 static_cast 替代方案?

static_cast在 C++11/14 或实现此功能的库中是否有“安全”替代方案?

通过“安全”,我的意思是演员应该只允许不失去精度的演员。因此,只有当数字适合 a 时才允许从int64_tto转换,否则会报告错误。int32_tint32_t

0 投票
2 回答
5276 浏览

c++ - 理解 gsl::narrow 实现

C++ 核心指南有一个narrow转换,如果转换更改了值,则抛出该转换。查看该库的microsoft 实现

if第二个没看懂 它检查什么特殊情况,为什么还static_cast<U>(t) != u不够?


为了完整性:

narrow_cast只是一个static_cast

details::is_same_signdess它的广告是这样的:

0 投票
1 回答
291 浏览

java - 从 double 到 float 的 Narrowing 转换的管理规则是什么?

从 double 到 float 的转换是否基于大小(十进制范围)?一开始我是这么想的,但是指数部分让我很困惑..那么什么规则控制着这种转换

其次,当从浮点数转换为整数时,规则是否只是取出小数部分?意思是 12.5 * 10^-6 将评估为零?

编辑:

我将以另一种更精确的形式写出我的问题:

  • 在java中将double转换为float的二进制级规则是什么(即缩小转换期间的符号,尾数,指数操作)

  • 这些二进制规则是否对应于十进制规则(人类可读),以便可以根据源(双精度)值预测结果?

  • 将浮点类型规则转换为整数类型时是否有任何类似的规则?

谢谢

0 投票
2 回答
133 浏览

c++ - P0960, 是否有任何机制可以检测 c++20 中带有 ()s 的新聚合 init 中是否存在变窄?

使用P0960() “允许从带括号的值列表中初始化聚合”,您也可以使用s进行聚合 init 。

但是,此初始化允许缩小,而{}s 不允许。

是否可以使用带括号的 C++20 聚合初始化来检测缩小转换?