珀尔 | given-when 语句
Perl 中的given-when
语句替代了将变量与多个整数值进行比较的长 if 语句。
-
given-when
语句是多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。 -
given
是一个控制语句,它允许一个值改变执行控制。
Perl 中的given-when
类似于C/C++ 、 Python或PHP的switch-case
。就像switch
语句一样,它也用不同的情况替换多个 if 语句。
句法:
given(expression)
{
when(value1) {Statement;}
when(value2) {Statement;}
default {# Code if no other case matches}
}
given-when
语句还使用另外两个关键字,即break和continue 。这些关键字维护程序的流程并帮助退出程序执行或在特定值处跳过执行。
break: break 关键字用于跳出when
块。在 Perl 中,不需要在每个when
块之后显式地编写 break。它已经被隐式定义了。
继续:另一方面, when
第一个块是正确的,则继续移动到when
一个块。
在given-when
语句中,条件语句不能在多个when
语句中重复,这是因为 Perl 仅检查该条件的第一次出现,而下一个重复语句将被忽略。此外,必须在所有when
语句之后放置一个 default 语句,因为编译器会按顺序检查每个when
语句的条件匹配,如果我们将default
放在两者之间,那么它将在那里break
并打印 default 语句.
例子:
#!/usr/bin/perl
# Perl program to print respective day
# for the day-code using given-when statement
use 5.010;
# Asking the user to provide day-code
print "Enter a day-code between 0-6\n";
# Removing newline using chomp
chomp(my $day_code = <>);
# Using given-when statement
given ($day_code)
{
when ('0') { print 'Sunday' ;}
when ('1') { print 'Monday' ;}
when ('2') { print 'Tuesday' ;}
when ('3') { print 'Wednesday' ;}
when ('4') { print 'Thursday' ;}
when ('5') { print 'Friday' ;}
when ('6') { print 'Saturday' ;}
default { print 'Invalid day-code';}
}
输入:
4
输出:
Enter a day-code between 0-6
Thursday
嵌套given-when
语句
嵌套given-when
语句是指在另一个 given- given-when
语句中的given-when
语句。这可用于维护用户为特定输出集提供的输入层次结构。
句法:
given(expression)
{
when(value1) {Statement;}
when(value2) {given(expression)
{
when(value3) {Statement;}
when(value4) {Statement;}
when(value5) {Statement;}
default{# Code if no other case matches}
}
}
when(value6) {Statement;}
default {# Code if no other case matches}
}
以下是嵌套given-when
语句的示例:
#!/usr/bin/perl
# Perl program to print respective day
# for the day-code using given-when statement
use 5.010;
# Asking the user to provide day-code
print "Enter a day-code between 0-6\n";
# Removing newline using chomp
chomp(my $day_code = <>);
# Using given-when statement
given ($day_code)
{
when ('0') { print 'Sunday' ;}
when ('1') { print "What time of day is it?\n";
chomp(my $day_time = <>);
# Nested given-when statement
given($day_time)
{
when('Morning') {print 'It is Monday Morning'};
when('Noon') {print 'It is Monday noon'};
when('Evening') {print 'It is Monday Evening'};
default{print'Invalid Input'};
}
}
when ('2') { print 'Tuesday' ;}
when ('3') { print 'Wednesday' ;}
when ('4') { print 'Thursday' ;}
when ('5') { print 'Friday' ;}
when ('6') { print 'Saturday' ;}
default { print 'Invalid day-code';}
}
输入:
1
Morning
输出:
Enter a day-code between 0-6
What time of day is it?
It is Monday Morning
输入:
3
输出:
Enter a day-code between 0-6
Wednesday
在上面给出的示例中,当输入日期代码不是 1 时,代码将不会进入嵌套的given-when
块,输出将与前面的示例相同,但如果我们将 1 作为输入,那么它将执行 Nested given-when
块,并且输出将与前面的示例不同。