Perl/RangeOperator 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: Perl/RangeOperator 는 읽기 전용 페이지입니다.
* http://perldoc.perl.org/perlop.html#Range-Operators *
..
와
...
* 리스트 컨택스트 ** 좌변부터 우변까지 1씩 증가하는 리스트를 반환 ** 좌변값이 우변보다 클 경우는 빈 리스트 반환 ** 예:
foreach(1..10)
('A' .. 'Z')
@z2 = ('01' .. '31')
* 스칼라 컨택스트 ** 부울린 값 반환 ** 상태값을 유지 *** 처음에는 거짓 *** 좌변이 참이 되면 그 때부터는 참 *** 우편이 참이 되면 그 '''다음'''부터 다시 거짓 ** 연산자 상태가 거짓인 동안에는 우변은 검사조차 되지 않는다. 마찬가지로 상태가 참인 동안은 좌변은 검사되지 않는다. **
..
와
...
의 차이: ***
..
를 사용할 경우, 좌변이 참이 되어 연산자 상태가 참이 되는 그 시점에 우변도 검사한다. 즉 참이 되자마자 곧바로 다시 거짓이 될 수도 있다 (이 때 반환하는 건 참이다. 즉 한 번은 참을 반환한다.) ***
...
를 사용할 경우는 연산자가 참이 되는 시점에서는 우변은 검사하지 않고, 그 다음 검사부터 우변을 검사한다. ** 리턴값 *** 거짓을 반환할 때는 빈 스트링을 반환 *** 참을 반환할 때는 1부터 시작해서 매 반환 때마다 1씩 증가하는 숫자를 반환 (즉 "몇 번째 참이 반복되고 있는지" 셀 수 있다) *** 마지막으로 참을 반환할 때는 숫자 뒤에 "E0"을 붙여서 반환한다. 숫자값에 영향을 주지 않으면서 사용자가 마지막임을 체크할 수 있다. ** 좌변과 우변이 다 상수식이라면, "현재 입력 행번호
$.
" 변수가 그 상수식과 같은지(
==
)를 검사한다. ** 주의: 각 .. 연산자는 자신의 상태값을 계속 유지하며, 서브루틴 안에 들어 있거나 루프 안에 있더라도 그에 무관하게 값이 유지된다.
** 참고: 참을 반환할 때 반환값의 특성(1부터 시작하여 증가하며, 마지막에는 "E0"이 끝에 붙는)을 사용하여, 상태값을 토글하는 라인(처음 참이 되거나 마지막으로 참이 되는)을 제외하거나 기타 정교한 조작을 할 수도 있다
. * 테스트 코드: {{{#!vim 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"; } }}} 위 코드의 실행 결과: {{{#!vim 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) [] }}}
----
---- [[컴퓨터분류]] [[Perl]]
Perl/RangeOperator
페이지로 돌아가기 |
다른 수정본 보기