📜  珀尔 | given-when 语句

📅  最后修改于: 2022-05-13 01:54:26.756000             🧑  作者: Mango

珀尔 | given-when 语句

Perl 中的given-when语句替代了将变量与多个整数值进行比较的长 if 语句。

  • given-when语句是多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。
  • given是一个控制语句,它允许一个值改变执行控制。

Perl 中的given-when类似于C/C++PythonPHPswitch-case 。就像switch语句一样,它也用不同的情况替换多个 if 语句。

句法:

given(expression)
{
    when(value1) {Statement;}
    when(value2) {Statement;}

    default {# Code if no other case matches}
}

given-when语句还使用另外两个关键字,即breakcontinue 。这些关键字维护程序的流程并帮助退出程序执行或在特定值处跳过执行。

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块,并且输出将与前面的示例不同。