Предложить оптимизированный код для данного вложенного цикла - PullRequest
0 голосов
/ 15 июня 2011

Пожалуйста, помогите мне сделать приведенный ниже код более читабельным или (Предложить любую оптимизацию)

    @for i in $(LIST_A); do \
            for j in  $(LIST_B); do\
            if [ "$$i" = "$$j" ] ;then\
             echo " A match found ";\                
            else\
            echo "Not found any corresponding String in LIST_B ";\
                     fi; \
            done\
    done;

1 Ответ

0 голосов
/ 05 июля 2011

не уверен, какой язык оболочки у вас в вопросе, но вот версия Korn, которую вы могли бы использовать ...

#!/bin/ksh

LIST_A="a b c d e"
LIST_B="d f g"

got_match="0"

for item_A in $LIST_A
do
    #echo $item_A
    for item_B in $LIST_B
    do
        #echo $item_A "  " $item_B
        if [ "$item_A" == "$item_B" ]
        then
            echo "matched " $item_A
            got_match="1"
            break 2;
        fi
    done
done

if [ "$got_match" == "0" ]
then
    echo "no match"
fi

«Перерыв 2» выходит из обоих циклов (при условии, что вы этого хотите)

"... сделать более читабельным ...", возможно, стиль, но мои предложения:

  1. используйте значимые имена, а не i и j
  2. избегать нескольких операторов в одной строке (избегать использования;)
  3. правильно сделать отступ
  4. комментарий с указанием намерения, если оно не очевидно

Еще одно предложение: предоставьте рабочую версию / фрагмент кода в будущих вопросах, чтобы другие могли запустить тестирование, и указать, на каком языке это написано.

...