-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]] |
foreach(1..10)
('A' .. 'Z')
@z2 = ('01' .. '31')
..
와 ...
의 차이:
..
를 사용할 경우, 좌변이 참이 되어 연산자 상태가 참이 되는 그 시점에 우변도 검사한다. 즉 참이 되자마자 곧바로 다시 거짓이 될 수도 있다 (이 때 반환하는 건 참이다. 즉 한 번은 참을 반환한다.)
...
를 사용할 경우는 연산자가 참이 되는 시점에서는 우변은 검사하지 않고, 그 다음 검사부터 우변을 검사한다.
$.
" 변수가 그 상수식과 같은지(==
)를 검사한다.
# 좌변은 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) []