왜 Perl은 후위 비교에서 후위 루프를 연결시키지 않을까요?
$foo++ if $condition;
그리고 이것은 괜찮습니다 :
$foo++ for (1..10);
하지만 그렇지 않습니다 :
$foo++ if $condition for (1..10);
일이 복잡하지 않다면 후자를 아주 쉽게 읽을 수 있습니다. 한 줄에 들어 맞습니다! 이 일을 할 수있는 방법이 있습니까? 아니면 제 삶과 함께해야합니까?
왜 Perl은 후위 비교에서 후위 루프를 연결시키지 않을까요?
$foo++ if $condition;
그리고 이것은 괜찮습니다 :
$foo++ for (1..10);
하지만 그렇지 않습니다 :
$foo++ if $condition for (1..10);
일이 복잡하지 않다면 후자를 아주 쉽게 읽을 수 있습니다. 한 줄에 들어 맞습니다! 이 일을 할 수있는 방법이 있습니까? 아니면 제 삶과 함께해야합니까?
문당 하나의 후위 작업 만 할 수 있습니다. 하지만 do
블록을 사용하여 원하는대로 할 수 있습니다 (예 :).
do { $foo++ if $condition } for (1..10);
개인적으로이 스타일은 매우 혼란스럽고 읽기가 어렵습니다. 내가 너라면 그걸 피할거야. 그 모든 문제에 빠지면
for(1..10) { $foo++ if $condition }
IMHO라고 말할 수 있습니다.
정말 나에게 모두 똑같습니다. 나는 그 곳의 철자가 어디에 있는지를 알 수 없었고 설명을 찾고있었습니다. 감사! – wes
문 and
인 경우 적합한 그러나
$condition and $foo++ for 1 .. 10;
을 말할 수 있도록,와 같은 효과를 얻을 수있는 또 다른 방법은, 그는 격려 방법이 아닙니다.
필자가 이해 하듯이, 이것은 사람들이 읽기 어렵게 작성하거나 올바른 코드를 작성하는 것을 피하기 위해 perl 초창기의 의도적 인 설계 결정이었습니다. Perl 6은 적어도 일부 조합 (if/for 및 for/if 일 수도 있고 for/for 일 수도 있고 if/if 일 수도 있음)을 허용 할 것이며 Perl 5가 어떤 시점에서이를 따라 올 것이라고 믿습니다.
업데이트 : Perl 6은 루프 내부에 조건부를 허용합니다 (예 : EXPR if EXPR for LIST
). 더 이상 괄호가 필요하지 않습니다 (예 : (EXPR for LIST) if EXPR
).
때때로 Larry Wall과 공동의 마음에 마지막으로 읽을 수없는 코드가 없다고 생각합니다. D Perl의 기쁨 중 하나인데, 상황에 가장 적합한 것을 할 수있는 자유입니다. 나 자신을 망칠 수있는 기회를 제공하더라도, 나는 더 많은 자유를 누리고있다. – wes
제목에 Perl을 대문자로 사용 하시겠습니까? =) –