[완료] perl smart matching 질문좀 드려요~
글쓴이: jeun3786 / 작성시간: 월, 2012/05/14 - 7:17오후
#!/usr/bin/perl use warnings; use strict; use 5.010; sub divide { my $number = shift; my @list; foreach(2..($number/2)) { push @list, $_ unless $number % $_; } return @list; } given($ARGV[0]) { my @result = divide($_); when(@result ~~ 2) {print "$_ is even\n"; continue;} # 문제 부분 when(!(@result ~~ 2)) {print "$_ is odd\n"; continue;} # 문제 부분 when(@result ~~ []) {print "$_ is prime\n"} default {print "$_ is dividible by @result\n"} }
책 예제를 보고 실행해 봤는데 책에서는 (@array ~~ 2)같이 실행하면 @array의 요소에 2가 있으면 true를 리턴하고 없으면
false를 리턴한다고 나와있는데요...위와같이 (@result ~~ 2)로 실행하면 제대로 동작이 않하고, (2 ~~ @result)로 해야만
제대로 동작을 합니다.
책을 읽어보니 smart matching은 교환 법칙이 성립한다고 나와있는데... 제가 잘못 알고 있다면 지적좀 해주세요~
Forums:
저는 저 연산자를 잘 안 써서 모르겠는데, (너무
저는 저 연산자를 잘 안 써서 모르겠는데, (너무 헷갈려서...)
http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail
여기 표를 보면...
여기에 해당되는 것 같은데 좌우변이 바뀐 상태에 적용될만한 행이 안 보이네요.
좋은 하루 되세요!
감사합니다~~~
덕분에 궁금한게 풀렸어요~ ㅎㅎ
책에는 교환법칙 된다고 나와놓고는 ㅠㅠ perldoc에는 않된다고 나오다니..
너무너무 감사해요!! ㅎㅎ
스마트 매치 연산자는 되도록 안 쓰는게 좋다고...
스마트 매치 연산자는 되도록 안 쓰는게 좋다고 하네요.
https://github.com/aero/perl_docs/blob/master/Learning_Perl_5th_kor_review.md 에 15장 부분 참고
윗글에 url이 잘못 링크되서...
http://bit.ly/MfTDTX 에 15장 부분 참고
감사합니다~~~ ^^
써보니 확실히 되도록 사용않하는게 좋을 것 같아요 ㅎㅎㅎ
댓글 달기