问题标签 [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.
ruby - 如果很明显它是一个字符串加法,为什么 Ruby 需要使用“to_a”将一个数组强制转换为字符串?
例如:
为什么 Ruby 不能自动将数组转换为字符串?
perl - Perl:修复 Moose 属性和类型强制问题
我最近将 Moose 升级到 v1.15,发现我使用的一组模块不再起作用。我得到的错误是:
我可以看到几个可能的错误来源,并感谢有关如何解决问题的建议。
GOBO::Node 的第一段代码如下所示:
该包使用的角色也具有 GOBO::Nodes 属性,错误消息中提到的属性 'source' 就是其中之一。
在 GOBO::Node 中进行强制的部分原因似乎是创建新节点时的捷径。使用 BUILDARGS 而不是强制使用会更好吗?
如果我想要几个包能够使用它,我应该把强制放在哪里?如果我将强制添加到(例如)GOBO::Attributed,我会收到它已经存在的警告。但是,如果没有强制,我会收到上面关于无法强制的警告。
有一个单独的子类型包;创建 GOBO::Node 的子类型会更好吗?例如 GOBO::Node::ProtoNode 和强制转换,并将其用于属性应该是 GOBO::Nodes?
感谢您对此问题的任何帮助或建议!
sql - 在 SQLite3 中将字符串与数字进行比较
我在 SQLite 中有以下查询:
wheret1.field
是一个包含数字的文本列。是否可以强制 SQLite 将 t1.field 的值视为数字而不是字符串(不做ALTER TABLE
)?现在排序是纯字符串排序,所以 10 在 2 之前。
谢谢你。
flash - Flash 错误 #1034:使用 Flash Develop 运行时类型强制失败
我已经编译了一个 SWC 并在 flashdevelop 项目中使用它。
当我编译项目时一切都很好,但是当我运行/调试项目时,我得到:
以下行导致错误:
LoginControlView 是影片剪辑名称。loginControlView 是资产名称。并且有一个名为 loginControl 的类扩展了 loginControlView
LoginControlView 影片剪辑包含 2 个文本框和一个按钮 (fl.controls)
如果我从 Flash IDE 编译/运行/调试,该项目运行良好。
有什么建议么?
perl - 驼鹿胁迫和建设者
这是我之前关于 Moose 结构化类型的问题的后续。我为问题的长度道歉。我想确保我包含了所有必要的细节。
MyApp::Type::Field
定义结构化类型。我使用强制来允许value
从我的类中更轻松地设置它的属性Person
(参见下面的示例)。请注意,在我的实际应用程序中,Field 类型不仅仅用于人名,我还从 HashRef 中强制转换。
我还需要在构建时设置MyApp::Type::Field
size
和required
只读属性。MyApp::Person
我可以使用 builder 方法来做到这一点,但如果使用强制,则不会调用它,因为我的强制直接创建一个新对象,而不使用 builder 方法。
我可以通过添加一个around
方法修饰符来解决这个问题MyApp::Person
(见下面的例子),但这感觉很乱。方法修饰符被频繁调用,around
但我只需要设置一次只读属性。
有没有更好的方法来做到这一点,同时仍然允许强制?该类MyApp::Type::Field
无法通过默认值或构建器进行初始化size
,required
因为它无法知道值应该是什么。
这可能只是我放弃强制而支持没有around
修饰符的情况。
MyApp::Type::Field
MyApp::Person
MyApp::Test
印刷:
将around
方法修饰符添加到MyApp::Person
,并更改构建器以使其不设置size
and required
:
何时MyApp::Test
运行,size
并required
设置两次。
建议的解决方案
daotoad建议为每个MyApp::Person
属性创建一个子类型,并将该子类型从 a 强制Str
转换为 aMyApp::Type::Field
效果很好。我什至可以通过将整个批次包装在一个 for 循环中来创建多个子类型、强制和属性。这对于创建具有相似属性的多个属性非常有用。
在下面的示例中,我使用 设置委托handles
,因此将$person->get_first_name
其转换为$person->first_name->value
。添加一个 writer 提供了一个等效的 setter,使类的接口非常干净:
印刷:
module - 模块签名中的类实例类型强制
我的几个模块包含全局类实例,它们使用两种方法实现给定的类类型,private_method
并且public_method
.
我希望MyModule.my_instance # public_method
在我的程序中的任何地方都可以使用,并且MyModule.my_instance # private_method
只能在MyModule
.
我尝试了以下方法:
但是,这会导致错误:
值不匹配:
val my_instance : private_type
不包括在
val my_instance : public_type
我可以手动编写强制:
但我宁愿不要将这样简单的代码大小加倍。
您对为什么会发生这种情况以及我如何解决它有什么建议吗?
iphone - 在 ARM 与 Intel 上强制浮动到 unsigned char
当我在 Intel 机器上运行以下 C 代码时...
...输出如下:
但是,当我在 ARM 设备(在我的情况下是 iPad)上运行相同的代码时,结果完全不同:
可以想象,这种差异会在跨平台项目中引入可怕的错误。我的问题是:
我是否错误地认为将浮点数强制转换为 unsigned char 会在所有平台上产生相同的结果?
他可能是编译器问题吗?
有没有优雅的解决方法?
r - 将因子转换为整数
我正在使用 reshape 包操作数据框。使用 melt 函数时,它会分解我的值列,这是一个问题,因为这些值的子集是我希望能够对其执行操作的整数。
有谁知道将一个因子强制转换为整数的方法?Usingas.character()
会将其转换为正确的字符,但是我无法立即对其执行操作,as.integer()
或者as.numeric()
将其转换为系统存储该因子的数字,这没有帮助。
谢谢!
杰夫
c - 在 c 中键入强制:unsigned int to float
我在主机和嵌入式处理器之间进行串行通信。在嵌入式方面,我需要解析浮点和整数数据的字符串。我目前正在做的事情是这样的:
其中 str 有四个字符,每个字符代表浮点数的一个字节。字符串中的字节按小端序排列。
例如,我试图从 str 中提取数字 100.0。我已经验证了字符串的内容是:
s[0]:0x00,s[1]:0x00,s[2]:0x20,s[3]:0x41,
这是 100.0 的 32 位浮点表示。此外,我已经验证该函数成功地将 temp 设置为 0x41200000。然而,dest 最终是 0x4e824000。我知道问题出在以下行:*dest = (float32)temp,我希望它可以简单地将位从 temp 复制到 dest,并使用类型转换使编译器满意。
但是,我意识到情况并非如此,因为操作:float x = (float)4/3 实际上将 4 转换为 4.0,即更改位。
如何将 temp 中的位强制转换为 dest?
提前致谢
编辑:请注意,作为整数的 0x4120000 是 1092616192,作为浮点数,它是 0x4e82400
perl - Moose 深度强制 - 用户定义类型的 ArrayRef
我在以下子类型和强制链中缺少什么?我希望能够强制验证类型的 arrayref 或从以下输入中死亡:
- 强制字符串
- 有效字符串
- 混合强制和有效字符串的 Arrayref
假设所有类型都是完全命名空间的,并且未声明的函数validate
和coerce_str
验证(返回布尔值)和强制并分别从输入返回一个有效字符串。
我知道 CustomType 有效;因为我可以定义一个属性并使用强制字符串或已经有效的字符串初始化对象。我不太确定如何做是显式地处理从构造函数中深入研究传递的 arrayref 并单独验证所有包含的字符串。我已经阅读了有关深度强制的文档(http://search.cpan.org/dist/Moose/lib/Moose/Manual/Types.pod#Deep_coercion)几次,但我只是不太明白我希望有人能指出我正确的方向。谢谢!
在这里,我将其缩减以更简洁地概述它,但是:
按原样运行会给我以下信息。问题不是验证,而是我没有明确定义我的强制,我不确定我错过了什么: