답변:
나는 그것들이 상호 교환 될 수 있다고 생각하지 않습니다. 그것들은 자주 유사하지만 차이점이 존재하며 주로 대조되는 것과 맥락에서 관련이있는 것 같습니다.
스칼라 는 일반적 으로 배열, 맵, 집합, 구조체 등과 같은 화합물 과 대조됩니다 . 스칼라는 정수, 부울, 아마도 문자열과 같은 "단일"값인 반면, 복합은 여러 스칼라로 구성됩니다. 다른 화합물). "스칼라"는 관련 구분이 단일 / 단순 / 원자 값과 복합 값 사이에있는 컨텍스트에서 사용됩니다.
그러나 원시 유형 은 참조 유형 과 대조 되며 Java의 원시 유형 대 참조에서와 같이 관련 구별이 "이것이 직접 값입니까, 아니면 실제 값을 포함하는 것에 대한 참조입니까?"일 때 사용됩니다. . 나는 이것이 스칼라 / 복합물보다 다소 낮은 수준의 구별이라고 생각하지만 완전히는 아닙니다.
상황에 따라 다릅니다 (그리고 자주 논의되는 언어 계열). 하나의 병리학적인 예를 들면 : 문자열. C에서 문자열은 복합 (문자 배열)이고 Perl에서 문자열은 스칼라입니다. Java에서 문자열은 객체 (또는 참조 유형)입니다. 파이썬에서 모든 것은 (개념적으로) 문자열 (및 숫자)을 포함한 객체 / 참조 유형입니다.
이 용어에 대한 많은 혼란과 오용이 있습니다. 종종 하나는 다른 의미로 사용됩니다. 이 용어가 실제로 의미하는 바는 다음과 같습니다.
"네이티브" 는 구현 방법에 관계없이 라이브러리 (표준 라이브러리 포함)에서 제공하는 것과 반대로 언어에 내장 된 유형을 나타냅니다. Perl 문자열은 Perl 언어의 일부이므로 Perl에서 기본입니다. C는 라이브러리를 사용하여 char에 대한 포인터에 대한 문자열 의미를 제공하므로 char에 대한 포인터는 기본이지만 문자열은 그렇지 않습니다.
"원자" 는 더 이상 분해 할 수없는 유형을 나타냅니다. "composite" 의 반대입니다 . 합성물은 원자 값 또는 다른 합성물의 조합으로 분해 될 수 있습니다. 기본 정수와 부동 소수점 숫자는 원자 적입니다. 분수, 복소수, 컨테이너 / 컬렉션 및 문자열은 복합입니다.
"Scalar"( 대부분의 사람들을 혼란스럽게하는 것입니다)는 크기, 부피, 개수 등과 같은 스케일 (따라서 이름)을 표현할 수있는 값을 나타냅니다. 정수, 부동 소수점 숫자 및 분수는 스칼라입니다. 복소수, 부울 및 문자열은 스칼라 가 아닙니다 . 원자적인 것이 반드시 스칼라 일 필요는없고 스칼라 인 것이 반드시 원자 적이지는 않습니다. 스칼라는 네이티브이거나 라이브러리에서 제공 할 수 있습니다.
일부 유형에는 이상한 분류가 있습니다. 일반적으로 숫자 또는 정수의 배열로 구현되는 BigNumber 유형은 스칼라이지만 기술적으로 원 자성이 아닙니다. 구현이 숨겨져 있고 내부 구성 요소에 액세스 할 수없는 경우 원자 적으로 표시 될 수 있습니다. 그러나 구성 요소는 숨겨져 있으므로 원자 성은 환상입니다. 거의 항상 라이브러리에서 제공되므로 네이티브는 아니지만 가능할 수 있습니다. 예를 들어 Mathematica 프로그래밍 언어에서 큰 숫자는 네이티브이고 Mathematica 프로그램이이를 빌딩 블록으로 분해 할 수있는 방법이 없기 때문에 해당 컨텍스트에서 원자 적입니다. 커버 (더 이상 Mathematica 언어의 세계에 있지 않은 곳).
이러한 정의는 사용되는 언어와 무관합니다.
간단히 말해서 '스칼라'유형은 복합 또는 컬렉션이 아닌 단일 항목을 참조하는 것처럼 보입니다. 따라서 스칼라에는 원시 값과 열거 형 값이 모두 포함됩니다.
http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html
아마도 '스칼라'용어는 C에 대한 후퇴 일 수 있습니다.
스칼라는 단일 값을 포함하고 다른 C ++ 객체로 구성되지 않은 기본 객체입니다.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1995/N0774.pdf
이 항목이 '스케일'의 값을 가질 지 여부를 나타내는 지 궁금합니다. -숫자 세기 등.
간결하고 권위있는 링크로 뒷받침되기 때문에 Scott Langeberg의 답변을 좋아합니다. 가능하다면 Scott의 답변에 찬성 투표를했습니다.
2 차 데이터 유형이 기본 데이터 유형에서 파생되도록 "기본"데이터 유형이 기본 데이터 유형으로 간주 될 수 있다고 가정합니다. 파생은 C ++ 구조체와 같은 결합을 통해 이루어집니다. 구조체를 사용하여 데이터 유형 (예 : and int 및 char)을 결합하여 보조 데이터 유형을 가져올 수 있습니다. 구조체 정의 데이터 유형은 항상 보조 데이터 유형입니다. 기본 데이터 유형은 어떤 것에서 파생 된 것이 아니라 프로그래밍 언어로 제공됩니다.
나는 기본을 의미하는 명명법 인 원시와 유사합니다. 그 평행은 "정규식"입니다. 명명법 "일반"은 "규제"로 이해 될 수 있다고 생각합니다. 따라서 검색을 규제하는 표현이 있습니다.
스칼라 어원 ( http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalar&searchmode=none )은 사다리 형을 의미합니다. 이것이 프로그래밍과 관련된 방식은 사다리가 단 하나의 차원을 가지고 있다는 것입니다. 사다리 끝에서 몇 개의 가로대가 있는지. 스칼라 데이터 유형에는 차원이 하나만 있으므로 단일 값으로 표시됩니다.
사용상 프리미티브와 스칼라는 상호 교환이 가능하다고 생각합니다. 스칼라가 아닌 프리미티브 또는 프리미티브가 아닌 스칼라의 예가 있습니까?
상호 교환이 가능하지만 프리미티브는 데이터 유형이 다른 데이터 유형의 기본 빌딩 블록이며 프리미티브는 다른 데이터 유형으로 구성되지 않음을 나타냅니다.
스칼라는 단일 값을 갖는 것을 나타냅니다. 스칼라는 수학적 벡터와 대조됩니다. 벡터는 하나의 값으로 표현되지 않습니다. (예를 들어 한 종류의 벡터 사용) 벡터의 방향을 나타내는 데 하나의 값이 필요하고 벡터의 크기를 나타내는 데 다른 값이 필요하기 때문입니다.
참조 링크 : http://whatis.techtarget.com/definition/primitive http://en.wikipedia.org/wiki/Primitive_data_type