1

如何确保变量值作为整数传递?我有一个正在传递给 JSON 调用的变量,如果我通过 getopts 设置值,然后在事件中将值传递给 JSON,它会失败。无论该值是在命令行上输入还是通过设置的默认值输入,这都会失败。

例如:

my $code = $opt_s||'4';

但是,如果我像这样设置硬编码值:

$code = '4';

这行得通。

API 期望提供一个 int 。我假设我的变量在第一种情况下被转换为字符串,但是我不知道如何阻止这种行为。

谢谢蜜蜂

4

2 回答 2

2

我认为这是一个有问题的 API,因为 Perl 考虑有符号整数 (IV) 四、无符号整数 (UV) 四、浮点数 (NV) 四、8 位字符串 (PV,UTF8=0) 四和 72 位字符串(PV,UTF8=1) 四个一样的值。(这还不包括重载对象和魔法变量!)

您可以使用接受一个数字并返回一个数字的操作将值的表示形式转换为一种数字格式(IV、UV 或 NV):

0+$code

如果您特别想要静脉注射,您可能需要访问 perlapi。

于 2013-07-03T20:57:14.367 回答
0

要获取数字的整数部分,请使用int() http://perldoc.perl.org/functions/int.html

另见:

Perl 有 round() 函数吗?ceil() 和 floor() 呢? http://perldoc.perl.org/perlfaq4.html#Does-Perl-have-a-round%28%29-function%3F-What-about-ceil%28%29-and-floor%28%29% 3F-三角函数%3F

于 2013-07-04T13:08:20.917 回答