[첫화면으로]Perl/RangeOperator

마지막으로 [b]

변경사항 (가장 최근의 "일반적인 수정"부터) (소소한 수정)

-21,8 +21,8
*** 참을 반환할 때는 1부터 시작해서 매 반환 때마다 1씩 증가하는 숫자를 반환 (즉 "몇 번째 참이 반복되고 있는지" 셀 수 있다)
*** 마지막으로 참을 반환할 때는 숫자 뒤에 "E0"을 붙여서 반환한다. 숫자값에 영향을 주지 않으면서 사용자가 마지막임을 체크할 수 있다.
** 좌변과 우변이 다 상수식이라면, "현재 입력 행번호 <code>$.</code>" 변수가 그 상수식과 같은지(<code>==</code>)를 검사한다.
** 주의: 각 .. 연산자는 자신의 상태값을 계속 유지하며, 서브루틴 안에 들어 있거나 루프 안에 있더라도 그에 무관하게 값이 유지된다. 이와 관련해서는 [[/RespectTheGlobalStateOfTheFlipFlopOperator]] 참고.
** 참고: 참을 반환할 때 반환값의 특성(1부터 시작하여 증가하며, 마지막에는 "E0"이 끝에 붙는)을 사용하여, 상태값을 토글하는 라인(처음 참이 되거나 마지막으로 참이 되는)을 제외하거나 기타 정교한 조작을 할 수도 있다. [http://www.effectiveperlprogramming.com/blog/795 Make exclusive flip-flop operators | The Effective Perler] 참고
** 주의: 각 .. 연산자는 자신의 상태값을 계속 유지하며, 서브루틴 안에 들어 있거나 루프 안에 있더라도 그에 무관하게 값이 유지된다.<footnote([[/RespectTheGlobalStateOfTheFlipFlopOperator]] 참고)>
** 참고: 참을 반환할 때 반환값의 특성(1부터 시작하여 증가하며, 마지막에는 "E0"이 끝에 붙는)을 사용하여, 상태값을 토글하는 라인(처음 참이 되거나 마지막으로 참이 되는)을 제외하거나 기타 정교한 조작을 할 수도 있다<footnote([http://www.effectiveperlprogramming.com/blog/795 Make exclusive flip-flop operators | The Effective Perler] 참고)>.
* 테스트 코드:

-88,7 +88,7
<div class="comments">
<longcomments(100)>
----
<trackbackreceived>
</div>
----
[[컴퓨터분류]] [[Perl]]


# 좌변은 n이 3일때, 8일때 참
sub left {
    my $n = shift;
    print " (left) ";
    return ( $n == 3 || $n == 8 );
}

# 우변은 n이 5일때, 9일때 참
sub right {
    my $n = shift;
    print " (right) ";
    return ( $n == 5 || $n == 9 );
}

# 1부터 10까지 .. 를 사용해서 검사
print "use ..\n";
foreach my $n ( 1 .. 10 ) {
    print "$n : ";
    my $r = ( left($n) .. right($n) );
    print "[$r]\n";
}

# ...를 사용해서 검사
print "use ...\n";
foreach my $n ( 1 .. 10 ) {
    print "$n : ";
    my $r = ( left($n) ... right($n) );
    print "[$r]\n";
}

위 코드의 실행 결과:
use ..
1 :  (left) []
2 :  (left) []
3 :  (left)  (right) [1]   <-- 참이 된 직후에 우변 역시 검사
4 :  (right) [2]
5 :  (right) [3E0]
6 :  (left) []
7 :  (left) []
8 :  (left)  (right) [1]   <-- 참이 된 직후에 우변 역시 검사
9 :  (right) [2E0]
10 :  (left) []
use ...
1 :  (left) []
2 :  (left) []
3 :  (left) [1]   <-- 참이 된 직후에는 우변은 검사하지 않음
4 :  (right) [2]
5 :  (right) [3E0]
6 :  (left) []
7 :  (left) []
8 :  (left) [1]   <-- 참이 된 직후에는 우변은 검사하지 않음
9 :  (right) [2E0]
10 :  (left) []

이름:  
Homepage:
내용:
 


컴퓨터분류 Perl
각주:
1. /RespectTheGlobalStateOfTheFlipFlopOperator 참고
2. [Make exclusive flip-flop operators | The Effective Perler] 참고

마지막 편집일: 2012-2-11 12:25 am (변경사항 [d])
1128 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기