我想在字符串上下文和数字上下文中返回一个不同的值$!
。我知道我可以通过 wantarray 找出我是在列表还是标量上下文中,但是在纯 Perl 中有什么方法可以确定我在哪个标量上下文中?我假设 XS 中也有答案,如果在纯 Perl 中无法做到,我愿意接受这个答案。
问问题
194 次
2 回答
13
查看Scalar::Util
模块,特别是dualvar()
功能:
use Scalar::Util qw(dualvar);
my $scalar = dualvar 10, "Hello";
my $twelve = $scalar + 2; # $twelve = 12
my $greeting = $scalar . " world"; # $greeting = "Hello world"
Scalar::Util
是核心发行版的一部分,应该可以在任何你有 Perl 的地方使用。
于 2009-04-29T00:49:17.173 回答
3
虽然我可以提出有用的情况(可能是罗马数字),但最好创建一个具有整数和字符串属性的对象。在适当的上下文中使用适当的属性。
这为您提供了额外的灵活性,可以使用“使用重载”来重载操作。在罗马数字示例中,dualvar 将一直有效,直到您想将 2 个罗马数字相加。
于 2009-05-02T00:39:39.243 回答