问题标签 [type-coercion]

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

c - 使用命令行参数检查范围

处理一个简单的 C 程序时,我遇到了一个 if 测试:

gcc 说:

我该怎么做才能正确检查我要处理的行的范围?

0 投票
1 回答
1013 浏览

php - 更改 PHP 类型强制

当我将我的站点从 HostGator 移至专用服务器时,有几件事情被破坏了,而且所有事情都被破坏了,涉及类型强制。如果 $_POST['var'] 为 0,则它不被视为整数,并且与另一个整数的比较失败。

我在我发现的网站上所有那些损坏的地方都经过并强制使用 int 类型,但我敢肯定还有更多我没有找到。我对 PHP.ini 配置不是很熟悉,但也许你是并且可以告诉我如何解决这个问题?

谢谢

0 投票
3 回答
2005 浏览

ruby-on-rails - 如何强制:连接表上的选择短语返回的 ActiveRecord 属性类型?

AR 2.3.5 遇到问题,例如:

退货,例如:

请注意,AR 将id搜索的模型返回为数字,但选择user_id的连接模型返回为 a String,尽管两者都int(11)在数据库模式中。

我怎样才能更好地形成这种类型的查询来选择支持多个模型的表列并检索它们的自然类型而不是String?似乎 AR 在某个地方对此进行了抨击。我怎样才能在 AR 加载时强制返回类型,而不必.to_i在每个事后访问上附加(等)?

0 投票
2 回答
10821 浏览

ruby - 在 Ruby 中, coerce() 是如何工作的?

据说当我们有课Point并且知道如何执行point * 3时,如下所示:

输出:

但是之后,

不明白:

Point不能强制转换为Fixnum( TypeError)

所以我们需要进一步定义一个实例方法coerce

输出:

所以说3 * point是一样的3.*(point)。也就是说,实例方法*接受一个参数point并在对象上调用3

现在,由于这个方法*不知道如何乘以一个点,所以

将被调用,并取回一个数组:

然后*再次应用到它上面,是这样吗?

现在,这被理解了,我们现在有了一个新Point对象,由类的实例方法*执行Point

问题是:

  1. 谁调用point.coerce(3)?是自动使用Ruby,还是通过捕获异常在*方法内部的一些代码?Fixnum或者是通过case声明当它不知道其中一种已知类型时,然后调用coerce

  2. 是否coerce总是需要返回一个包含 2 个元素的数组?可以没有数组吗?还是可以是 3 个元素的数组?

  3. 并且是规则,*然后将在元素 0 上调用原始运算符(或方法),并使用元素 1 的参数?(元素 0 和元素 1 是由 . 返回的数组中的两个元素coerce。)谁做的?它是由 Ruby 完成的还是由代码完成的Fixnum?如果它是通过代码完成的Fixnum,那么这是每个人在进行强制时都遵循的“约定”?

    那么它可能是*Fixnum这样的事情的代码:

    /li>
  4. Fixnum那么在实例方法中添加东西真的很难coerce吗?它已经有很多代码,我们不能只添加几行来增强它(但我们会想要吗?)

  5. coerce类中的Point非常通用,它可以与*or一起使用,+因为它们是可传递的。如果它不具有传递性,例如我们将 Point 减去 Fixnum 定义为:

    /li>
0 投票
2 回答
360 浏览

ruby - 在 Ruby 中, coerce() 方法能否知道需要帮助强制转换的运算符是什么?

在 Ruby 中,似乎可以通过以下方式完成很多 coerce() 帮助

也就是说,当

需要,Fixnum3不知道如何处理添加一个 Rational,所以它通过调用rational.coerce(3) 向 Rational#coerce 寻求帮助,这个 coerce 实例方法将告诉调用者:

那么如果大多数运营商都可以使用这种方法,但在 (a - b) != (b - a) 的情况下却不能使用呢?coerce() 可以知道它是哪个运算符,并且只处理那些特殊情况,同时只使用简单的 [self, something] 来处理 (a op b) == (b op a) 的所有其他情况吗?(op 是运算符)。

0 投票
3 回答
359 浏览

c++ - 跟进 C++ 中的类型强制,因为它可以通过类型转换来解释

这是对我之前的问题的跟进。

考虑一下我用以下原型编写了一个函数:

其中 foo 被认为是类型定义的 unsigned int。不幸的是,由于缺乏文档,这无法验证。

因此,有人出现并使用 a_function,但使用 unsigned int 作为参数调用它。

故事在这里发生了转折。Foo 实际上是一个类,它可以在显式构造函数中将 unsigned int 作为 unsigned int 的单个参数。

编译器通过对参数进行类型转换来呈现函数调用是否是标准且可靠的行为。即编译器是否应该识别不匹配并插入构造函数?或者我应该得到一个编译时错误报告类型不匹配。

0 投票
1 回答
603 浏览

sql-server - 有没有办法在 SQL Server 2005/2008 中禁用自动类型强制,从 varchar 到 int(例如)?

如果我有以下 SQL:

这将成功,插入值 1。

有什么办法可以要求 SQL Server 永久或暂时不要为我转换类型,而是使上述 SQL 执行失败?

我们有一个大型导入项目,我们想修复所有 SQL,但这需要仔细检查所有 SQL 并分析所有列的数据类型。由于这是针对我们服务器上的测试数据库执行的,因此我们希望让我们的服务器在数据类型错误时告诉我们。

0 投票
4 回答
281 浏览

javascript - 如果 [] 是 [] 并且 Array.prototype 是 [] 为什么不 ([] == Array.prototype)

我在控制台中乱七八糟,看到以下内容:

谁能解释这种行为?(听起来很适合 wtfjs)

0 投票
1 回答
331 浏览

javascript - 关于窗口上 jQuery 源 == 的问题

直接从 jQuery 源中复制。

为什么使用不安全elem === window

为什么jQuery对window对象使用类型强制?

在 IE 中似乎存在问题top

0 投票
3 回答
89 浏览

javascript - 这种类型的“对象”检查可以改进吗?

是不是一样

有什么b可以typeof b === "object"改变语义的吗?

我应该注意哪些可怕的边缘情况?具有非直观布尔相等或不等式的 aobject和 a之间的比较?native type包括浏览器中的任何错误(我的意思是你的 IE6!)