Perl L oop только один раз - PullRequest
0 голосов
/ 24 января 2020

По какой-то причине я не могу получить это значение l oop, один раз через это продолжает делать это три раза.

use strict;
use warnings;

for my $argument_value (@ARGV){
   my $length = @ARGV;
   if ($length < 3){
      print "Invalid command line arguments to program. Please supply two or more strings to sort."
   } else {
      print join (" ", @ARGV);
   }
}

1 Ответ

1 голос
/ 24 января 2020

Википедия определяет al oop следующим образом:

A * oop - это последовательность операторов, которая указывается один раз, но которая может выполняться несколько раз в последовательность.

Если вы хотите выполнять определенные инструкции только один раз, их не должно быть в любом случае oop. [1]

if (@ARGV < 2) {
   die("Invalid command line arguments to program. " .
      "Please supply two or more strings to sort.\n");
}

print("@ARGV\n");    # Short for print(join(" ", @ARGV), "\n");

Хотя проверка использования не должна быть в al oop, впоследствии у вас может быть al oop. Например,

if (@ARGV < 2) {
   die("Invalid command line arguments to program. " .
      "Please supply two or more strings to sort.\n");
}

for my $arg (@ARGV) {
   print("$arg\n");
}

  1. Или l oop должен быть немедленно завершен (обычно с использованием last, return или die) , Например, можно использовать следующий код, чтобы проверить, соответствует ли какой-либо из элементов в массиве некоторому условию:

    my $match = 0;
    for my $item (@items) {
       if (matches($item)) {
          $match = 1;
          last;
       }
    }
    

    $match = 1; должно быть внутри l oop (потому что это зависит от $item), но поскольку нет смысла делать $match = 1; более одного раза, мы выходим из l oop, как только мы находим совпадение.

    Здесь это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...