2016-08-04 3 views
5

오늘이 코드 블록을 발견했으며 이러한 유형의 작업이 어딘가에 문서화되어 있고 왜 이렇게했는지 (성능 등) 궁금합니다.곱셈 연산자는 집합에 대해 문서화되어 있습니까?

var 
    Shift: TShiftState 
begin 
    if [ssShift, ssCtrl] * Shift <> [] then 
    begin 
    ... 
    end; 
end; 

그것은 내 테스트에서 나에게 보이는 단지 시프트 ssShift 또는 ssCtrl 중 하나가 포함 된 경우 확인되어이 같은 코드를 찾고 있습니다. 이 문서화 된 동작입니까, 아니면 실제로 집합이 내부적으로 정수로 저장되어 있다는 사실을 이용하고 있습니까?

+0

내부 정수 표현은 그 자체에 의해 주어진 계산을 가능하게하기에 충분하지 않을 것입니다 :

다음은 문서에서 테이블의 요약입니다. –

답변

11

세트와 함께 사용하면 곱셈 연산자가 아닙니다. 그것은 교차 연산자입니다. 이것은 문서화되어 있으며 델포이 이전 시대부터있었습니다. Expressions, 특히 설정 작업 섹션을 참조하십시오. 그들은 노동 조합, 교차점, 하위 및 수퍼 집합, 평등, 불평등 및 멤버십을위한 표준 수학 연산자입니다.

 
Operator Operation  Operand Types Result Type Example 
-------- ---------  ------------- ----------- ------- 
+   union  set   set   Set1 + Set2 
-   difference set   set   S - T 
*   intersection set   set   S * T 
<=   subset  set   Boolean  Q <= MySet 
>=   superset  set   Boolean  S1 >= S2 
=   equality  set   Boolean  S2 = MySet 
<>   inequality set   Boolean  MySet <> S1 
in   membership ordinal, set Boolean  A in Set1 
+0

고마워, 그게 내가 원하는거야. 나는 표정을 보려고 생각하지 않았다. http://docwiki.embarcadero.com/RADStudio/Berlin/en/Structured_Types_(Delphi)에있는 정의를 살펴 보았습니다. 그리고 저는 이전 Turbo Pascal 시대부터 언어에 대한 작업을 알고 있어야합니다 :) – Graymatter

+0

해당 문서 하단의 링크를 따라 가십시오 ...... –

+1

docwiki에서 집합 연산자를 검색하면 해당 페이지가 첫 번째로 나타납니다 . –

관련 문제