Perl에서 Yoda 조건을 피해야 합니다.
5021 단어 conditionsstricturesperlwarnings
=
대신 단일 ==
을 입력한 경우 컴파일러는 변수를 assigning 대신 catch합니다. 예:if ( $foo == 42 ) { ... } # don’t do this
if ( 42 == $foo ) { ... } # do this
if ( $foo = 42 ) { ... } # to prevent this
그리고 a foolish consistency is the hobgoblin of little minds 이기 때문에 이것을 문자열 및 관계형 비교로 확장할 수도 있습니다.
if ( 'bar' eq $foo ) { ... } # weirdo
if ( 42 > $foo ) { ... } # make it stop
이상해 보이지만 코드 앞에
use warnings;
을 붙이면 불필요한 것으로 밝혀졌습니다. 그러면 Perl은 warn you: "Found = in conditional, should be ==
"이 됩니다. (참고: Perl v5.36, 2022년 중반 예정, use v5.35;
이상을 수행하면 slated to enable warnings by default이 되며, was enabled with use v5.11;
이라는 엄격함 외에도 상용구를 줄여야 합니다!)이 경고와 다른 많은 경고를 치명적으로 포착하려면 다음과 같이 코드에서 strictures module from CPAN을 사용하십시오.
use strictures 2;
이렇게 하면 exception의 실수를 많이 저지르면 코드에서 categories이 발생합니다. 버전 제어 시스템의 작업 디렉토리(특히 Git , Subversion , Mercurial 또는 Bazaar )에서 실행 중인 경우 모듈은 indirect object syntax , 6196791610 ,
대입 대 조건으로 돌아가서 if 문 내에서 대입을 사용하는 것이 허용되는 것으로 확인된 한 가지 경우가 있으며 그 때 조건 내에서 검사 결과를 사용해야 합니다. 예를 들어:
if ( my $foo = some_truthy_function() ) {
... # do something further with $foo
}
이것은 임시 변수로 외부 범위를 오염시키지 않도록
some_truthy_function()
결과의 범위를 블록 내부에 유지합니다. 다행히 Perl은 이 구문에 대해 경고하지 않습니다.표지 이미지: Perl 4‑style multidimensional arrays , bareword filehandles , Wikimedia Commons를 통해
Reference
이 문제에 관하여(Perl에서 Yoda 조건을 피해야 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mjgardner/avoid-yoda-conditions-in-perl-you-should-o0j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)