[SCALA] 스칼라 : 왜 Seq.contains는이 모든 인수 대신 시퀀스 유형의 인수를 걸립니까?
SCALA스칼라 : 왜 Seq.contains는이 모든 인수 대신 시퀀스 유형의 인수를 걸립니까?
그래서 예를 들어 왜 목록 (1,2,3,4) .contains는 ( "태권도 연맹")도 컴파일 무엇입니까? 컴파일러는이를 거부하면 좋지 않을까요?
해결법
-
==============================
1.여기에 흥미로운 답변이 많이 있지만, 내 자신의 이론 : Any를받지 못한 포함되어있는 경우, 다음 서열 공동 변형 할 수 없습니다.
여기에 흥미로운 답변이 많이 있지만, 내 자신의 이론 : Any를받지 못한 포함되어있는 경우, 다음 서열 공동 변형 할 수 없습니다.
예를 들어, 참조, 공동 변형하지 않고 누구의 설정은, Any를 대신하는 A을 포함하고 있습니다.
그 이유는 독자에게 연습으로 남아 있습니다. ;-)하지만 여기에 힌트 :
scala> class Container[+A](elements: A*) { | def contains(what: A): Boolean = elements exists (what ==) | } <console>:7: error: covariant type A occurs in contravariant position in type A of value what def contains(what: A): Boolean = elements exists (what ==) ^
-
==============================
2."포함"(그 전에 자바 등) 스칼라 평등 테스트 및 평등에 대한 근본적 형식화되지 않은 것입니다. 지정되지 않은-평등을 갖는 실제적인 값은 작고, 0은 아님. 있다, 예를 들어, 그것은 다른 클래스의 두 개체에 대한 의미가 몇 차례 서로 같아야합니다. 예를 들어, 당신은 그들이 같은 색상 또는 불변 HashSet의 그들은 같은 요소를 포함하는 경우와 동일하게 불변 TreeSet의를 정의 할 경우 PantoneColor 동일하게 형 RGBColor의 객체를 할 수 있습니다. 즉이 지정되지 않은 평등은 또한 두통의 무리, 그리고 컴파일러가 쉽게 목록 (1,2,3,4) .contains ( "태권도 연맹") 무의미하지만 잡을 수 있다는 사실을 일으키는 말했다하지 않습니다 그들 중 하나입니다 .
"포함"(그 전에 자바 등) 스칼라 평등 테스트 및 평등에 대한 근본적 형식화되지 않은 것입니다. 지정되지 않은-평등을 갖는 실제적인 값은 작고, 0은 아님. 있다, 예를 들어, 그것은 다른 클래스의 두 개체에 대한 의미가 몇 차례 서로 같아야합니다. 예를 들어, 당신은 그들이 같은 색상 또는 불변 HashSet의 그들은 같은 요소를 포함하는 경우와 동일하게 불변 TreeSet의를 정의 할 경우 PantoneColor 동일하게 형 RGBColor의 객체를 할 수 있습니다. 즉이 지정되지 않은 평등은 또한 두통의 무리, 그리고 컴파일러가 쉽게 목록 (1,2,3,4) .contains ( "태권도 연맹") 무의미하지만 잡을 수 있다는 사실을 일으키는 말했다하지 않습니다 그들 중 하나입니다 .
대부분의 자바 버그 찾는 도구는 황당한 유형이 지정되지 않은 평등 사용의 존재를 감지하는 테스트를 포함한다. (나는하게 IntelliJ IDEA에서이 작업을 수행 할 수있는 검사를 썼다.) 내가 스칼라 버그 찾는 도구가 온라인 상태가되면, 이들은 처음 감지 버그 사이에있을 것입니다 의심의 여지가있다.
-
==============================
3.값 (== 사용) 값과 동일한 시퀀스의 요소를 확인하여 존재하는지 여부를 확인 SeqLike.contains. ==이 이유 있다는 어떤 그래서 나는 의심한다.
값 (== 사용) 값과 동일한 시퀀스의 요소를 확인하여 존재하는지 여부를 확인 SeqLike.contains. ==이 이유 있다는 어떤 그래서 나는 의심한다.
from https://stackoverflow.com/questions/3678998/scala-why-does-seq-contains-take-an-any-argument-instead-of-an-argument-of-the by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 F-경계 유형 설명 (0) | 2019.11.13 |
---|---|
[SCALA] tar.gz의 압축 여러 파일에 읽기가 불꽃에 보관 [중복] (0) | 2019.11.13 |
[SCALA] 스칼라의 지능과 정수의 차이점은 무엇입니까? (0) | 2019.11.13 |
[SCALA] 스칼라에서 피보나치 함수를 작성하는 가장 빠른 방법은 무엇입니까? (0) | 2019.11.12 |
[SCALA] HList에지도 할 수 없습니다 (0) | 2019.11.12 |