Perl 6은 항등 연산자가 폭발적으로 증가한 것 같습니다. =:=
은 무엇입니까? leg
과 cmp
의 차이점은 무엇입니까? 또는 eqv
및 ===
?모든 다른 Perl 6 평등 연산자는 무엇이 다릅니 까? (==, ===, eq, eqv, ~~, = : =, ...)
누구나 요약 할만합니까? 레딧에서
Perl 6은 항등 연산자가 폭발적으로 증가한 것 같습니다. =:=
은 무엇입니까? leg
과 cmp
의 차이점은 무엇입니까? 또는 eqv
및 ===
?모든 다른 Perl 6 평등 연산자는 무엇이 다릅니 까? (==, ===, eq, eqv, ~~, = : =, ...)
누구나 요약 할만합니까? 레딧에서
=:= 테스트, 즉 하나 명의 변경, 다른 변화를 않는 경우도? 다른 사람에 관해서는
my $x;
my @a = 1, 2, 3;
# $x =:= @a[0] is false
$x := @a[0];
# now $x == 1, and $x =:= @a[0] is true
$x = 4;
# now @a is 4, 2, 3
: 두 개의 참조가 같은 객체를 가리키는 경우 === 테스트 및 두 가지 경우 eqv 시험은 구조적으로 동일합니다. 따라서 [1, 2, 3] === [1, 2, 3]
은 거짓 (같은 배열 아님)이지만 [1, 2, 3] eqv [1, 2, 3]
은 참 (동일한 구조)이됩니다. 펄 6의 cmp
똑똑하고 leg
처럼 <=>
같은 숫자와 문자열을 비교합니다 동안
leg
는 펄 5의 cmp
같은 문자열을 비교합니다.
13 leg 4 # -1, because 1 is smaller than 4, and leg converts to string
13 cmp 4 # +1, because both are numbers, so use numeric comparison.
마지막 ~~
는 "스마트 일치"는 질문에 대한 대답 "$x
일치 $y
을한다"입니다. $y
이 유형이면 형식 검사입니다. $y
이 정규식이면 정규식 일치입니다.
Perl 5에는 'eqv'가 없습니다. 나는 당신이 거기에서 'cmp'을 의미했다고 생각합니다. – cjm
오늘 : 두 개의 용기 (배열이나 해시의 변수 나 항목) 앨리어스 경우
Synopsis 3: Comparison semantics의 요약 내용은 이미 알고 있습니까? 디자인 문서는 해당 기능이 사용되는 테스트 파일로 연결되므로 사용 예제와 현재 테스트 상태를 볼 수 있습니다.
Perl 6의 비교 연산자는 동적 언어와 모든 작업에 훨씬 적합합니다. 단순히 문자열이나 숫자를 비교하는 것 (또는 문자열이나 숫자로 바꾸는 것) 대신 원하는 것을 수행하는 연산자로 정확하게 테스트 할 수 있습니다. 값, 컨테이너, 유형 등을 테스트 할 수 있습니다.
의견 중 하나는 eqv
과 cmp
입니다. Perl 5의 옛날에는 cmp
이 정렬을 위해 세 가지 마법 값 (-1,0,1) 중 하나를 반환하고 문자열 의미론을 항상 사용했습니다. Perl 6에서 cmp
은 Order
개체의 세 가지 유형 중 하나를 반환하므로 -1, 0 또는 1을 의미하는 것을 기억할 필요가 없습니다. 또한 새로운 cmp
은 문자열 의미를 강요하지 않으므로 (Perl 5의 1, 10, 11, 2, 20, 21 ...과는 달리) 수를 넘으면 더 똑똑해질 수 있습니다.
leg
(보다 리터 ESS, E QUAL보다 reater g)는 문자열 의미론 cmp
이다. Perl 6의 ~$a cmp ~$b
으로 정의됩니다. 여기서 ~
은 문자열 의미를 강제하는 새로운 "문자열 상황화 기"입니다. leg
을 사용하면 이전 Perl 5 cmp
처럼 항상 문자열 비교를 수행합니다.
다른 연산자에 대해 질문이있는 경우 별도의 질문으로 나누십시오. :)
http://docs.perl6.org/도 참조하십시오. 개별 운영자를 검색 할 수 있습니다. – Coke
이것은 또한 편리한 참조 가이드 :
당신이'...'또한 유효한 연산자는 것을 알고 계십니까? –
왜 복잡성에 대한 두려움이 있습니까? 모든 기능을 사용할 필요는 없습니다. JUst는 필요한 것을 배웁니다. – Aftershock