在perl中从函数获取返回布尔值
我从多个教程中听说没有布尔变量。相反,我可以用1表示真,用0表示假。但是,我有两种方法来获取布尔值。输出是相同的。。但我不知道哪种方法是收集返回布尔值的正确方法。 让我给你举个例子 我制作了一个脚本call.pl来从另一个脚本script.pl调用函数,script.pl将返回1或0。我执行if条件以进行计算。 如果它是真的,它会说它是真的,否则它就是奇怪的 方法1 script.pl在perl中从函数获取返回布尔值,perl,Perl,我从多个教程中听说没有布尔变量。相反,我可以用1表示真,用0表示假。但是,我有两种方法来获取布尔值。输出是相同的。。但我不知道哪种方法是收集返回布尔值的正确方法。 让我给你举个例子 我制作了一个脚本call.pl来从另一个脚本script.pl调用函数,script.pl将返回1或0。我执行if条件以进行计算。 如果它是真的,它会说它是真的,否则它就是奇怪的 方法1 script.pl sub checkevenodd { my ($num) = @_; chomp($num
sub checkevenodd {
my ($num) = @_;
chomp($num);
my $remainder = $num % 2;
if ($remainder == 0)
{
return 1;
}
else
{
return 0
}
}
1;
sub checkevenodd {
my ($num) = @_;
chomp($num);
my $remainder = $num % 2;
if ($remainder == 0)
{
return 1;
}
else
{
return 0
}
}
1;
call.pl
require "script.pl";
my $no = 123;
if (checkevenodd($no) == 1)
{
print "it is even";
}
else
{
print "it is odd";
}
require "script.pl";
my $no = 123;
if (checkevenodd($no))
{
print "it is even";
}
else
{
print "it is odd";
}
方法2
script.pl
sub checkevenodd {
my ($num) = @_;
chomp($num);
my $remainder = $num % 2;
if ($remainder == 0)
{
return 1;
}
else
{
return 0
}
}
1;
sub checkevenodd {
my ($num) = @_;
chomp($num);
my $remainder = $num % 2;
if ($remainder == 0)
{
return 1;
}
else
{
return 0
}
}
1;
call.pl
require "script.pl";
my $no = 123;
if (checkevenodd($no) == 1)
{
print "it is even";
}
else
{
print "it is odd";
}
require "script.pl";
my $no = 123;
if (checkevenodd($no))
{
print "it is even";
}
else
{
print "it is odd";
}
我使用该函数检查是1还是0。。。如果它是1,则它是偶数或奇数。
那么,哪种方法最适合从函数中接收布尔值??我不想创建一个变量。相反,我想返回1或0。。如何获取1或0。。这是正确的写作方法吗
if (checkevenodd($no) == 1)
您没有检查布尔值。您正在检查值1。在这种情况下,它将起作用(因为checkenOdd()
只返回0或1),但一般来说,您应该只检查布尔表达式的真值,而不是它的值。最好写下:
if (checkevenodd($no))
还有几点
不是此子例程的好名称。当我有返回布尔值的子例程时,我总是尝试给它们一个以checkenOdd
开头的名称。如果数字为偶数,则您的子例程将返回true,因此我将调用此子例程is\uu
is_even()
- 您的子例程比需要的复杂得多。我会这样写:
sub is_even { my ($num) = @_; # For an even number, $num % 2 is zero - which is false. # Therefore use ! to make it true. return ! $num % 2; }
- 像这样的东西怎么样
sub even_odd {
my ($num) = @_;
my $remainder = $num % 2;
return $remainder ? 0 : 1;
}
并将其用作完整的脚本:
my $no = 123;
if (even_odd($no))
{
print "it is even";
}
else
{
print "it is odd";
}
sub even_odd {
my ($num) = @_;
my $remainder = $num % 2;
return $remainder ? 0 : 1;
}
返回值:奇数0和1分别被视为false和true。因此,您可以简单地使用缩写形式:
if(checkevenodd($no)){…}
。我认为这种隐式形式也更正确,因为您实际上是在检查条件是否为真,而不是比较整数。0为假,但1不完全为真,它只是一个可能的真值。一切都是真实的,而不是虚假的。例如,2也是真的。@ceving,0也只是许多假值中的一个。将子例程放在不同的文件中完全是在转移注意力。我不明白为什么perl中没有布尔变量,而其他编程中却有布尔变量