비교 연산자 연결
$a < $b < $c
와 같은 하나의 표현식으로 다중 변수의 관계가 설명됩니다. It is not commonly seen in programming languages though.Raku(이전에는 Perl6)는 처음부터 이 구문을 지원합니다. 예제 프로그램
num-within
은 STDIN에서 숫자를 읽고 범위 $from...$until
내에 있는 경우에만 다시 반향하도록 설계되었습니다.#!/usr/bin/env raku
## Usage: num-within <from> <until>
my ($from, $until) = @*ARGS[0, 1];
for $*IN.lines() -> $num {
if $from <= $num < $until {
say $num
}
}
다음과 같이 사용됩니다.
# bash -c 'while true; do echo $RANDOM; done' | num-within 100 120
114
165
155
130
161
199
108
115
153
166
...
Python3은 비교 연결도 지원합니다. 다음은 python3의 동일한 프로그램입니다.
#!/usr/bin/env python3
## Usage: num-within.py <from> <until>
import sys
num_from = int(sys.argv[1])
num_until = int(sys.argv[2])
for line in sys.stdin:
n = int(line)
if num_from <= n < num_until:
print(str(n))
최근Perl5 started to partially support comparison chaining since version 5.31.10, 후자 5.32.0. Perl5의
num-within
는 다음과 같습니다.#!/usr/bin/env perl
## Usage: num-within.pl <from> <until>
use v5.31.10;
my ($from, $until) = @ARGV[0,1];
while(defined(my $num = <STDIN>)) {
if ($from <= $num < $until) {
print $num;
}
}
분명히 주어진 변수의 경계를 확인하는 것 외에도 많은 다른 용도가 있습니다.
max3(a,b,c)
가 좋은 예가 될 것입니다(3개 값 중 최대값 가져오기).sub max3($x, $y, $z) {
return $x if $y <= $x >= $z;
return $y if $z <= $y >= $z;
return $z;
}
그러나 현재 Perl5에서의 구현은 여전히 덜 이상적입니다. 이 표현을 고려하면:
$a < $b == $c < $d
... Raku, Python3 및 수학에서 다음과 같은 동일한 의미를 표현합니다.
($a < $b) and ($b == $c) and ($c < $d)
반면에 Perl5에서는 현재 논리적으로 다음과 동일합니다.
($a < $b) == ($c < $d)
이 불일치는 Perl5의
==
연산자가 실제로 documented in perlop since perl-5.31.11.인 비교 체인의 일부가 될 수 없기 때문입니다(Arguabaly는 직접 문서화되지 않았지만 우선 순위 테이블에서 파생될 수 있음). 아마도 기다려야 할 것입니다. 조금 더.本文為 連環比較運算式 一文之英文版.
Reference
이 문제에 관하여(비교 연산자 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gugod/chaining-comparison-operators-1614텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)