Renat : 그리고 나머지를 생각해보면 누가 이미 원래 enum 집합을 사용하고 있습니까?
자, "나머지"에 대해 다시 생각해 봅시다. 명명된 상수 식별자가 도입된 이유는 무엇입니까? - 맞습니다. 동일한 식별자를 사용하기 위해서입니다. 또한 이러한 식별자를 사용하기 위해 열거형의 구성원에게 할당된 특정 값을 알 필요는 절대 없습니다. 아니면 유능한 프로그래머가 식별자를 사용하는 대신 열거형 멤버 의 기본값을 찾은 다음 이 기본값을 기반으로 검사를 수행한다고 가정합니까?
레나트 : 서버 콤플렉스 전체의 어리둥절한 표정은 말할 것도 없고요.
저것들. 내가 이해한 대로 제안 자체를 구현하는 것은 어렵지 않습니까?
Renat : 일반적으로 질문이 잘못 제기되었습니다. 개발자는 게으르지 않고 이 세계의 자멸을 통해 나머지 세계가 스스로 적응하도록 강요해서는 안 됩니다.
네, 사실 이 주제의 작가는 게으름 때문에 다른 사람의 세계를 파괴할 생각은 없었습니다. 그리고 개선을 위한 구체적인 제안을 했습니다. 그리고 그는 0 값이 오버로드되었다고 설명했습니다.
void test1() { enum ENUM_1 { ELEM1 }; }
void test2() { enum ENUM_2 { ELEM1 }; } //ошибка
class A {
enum ENUM_A { ELEM1 };
};
class B {
enum ENUM_B { ELEM1 }; //ошибка
};
클래스에 대한 근거: 라이브러리(타사 포함) 및/또는 미리 정의된 라이브러리와 예기치 않게 충돌할 수 있는 고유한 이름을 제시해야 합니다. 또한, 열거형 SL, TP, PRICE 등의 요소에 대해 유사한 이름을 여러 클래스에서 동시에 사용할 수 있습니다. 갈등의 두려움 없이.
ME5는 컴파일할 때 오류를 생성하는데, 이는 제 생각에는 정당하지 않습니다.
실제로 RadioButtons에 해당하는 ENUM_XXX 형식의 미리 정의된 열거형에 1부터 번호가 매겨지기를 원하지만 지금은 기본적으로 번호가 매겨집니다. 0에서. 질문은 기본값을 변경하는 것이 아니라 변경하는 것이 아니라
그것은
근거는 다음과 같습니다 - 예:
코드 어딘가에서 request.type의 값을 분석할 때 0이면 초기화되지 않았는지 또는 초기화되었는지를 이해하는 것이 불가능합니다.
request.type = ORDER_TYPE_BUY;
이것은 RadioButton에 해당하는 ENUM_XXX와 같이 미리 정의된 열거형이 가장 많은 상황이며, 현재 상황에서 올바른 처리를 위해서는 코드의 부당한 복잡성 이 필요합니다.
그리고 미리 정의된 열거형의 첫 번째 구성원으로 특정 중립 식별자를 처방하지 못하게 하는 것은 무엇입니까? 예를 들어:
"0부터 번호 매기기"를 유지하고 초기화되지 않은 변수를 쉽게 계산할 수 있습니다.
그리고 미리 정의된 열거형의 첫 번째 구성원으로 특정 중립 식별자를 처방하지 못하게 하는 것은 무엇입니까? 예를 들어:
그리고 나머지를 생각해보면 누가 이미 원래 열거형 세트를 사용하고 있습니까? 전체 서버 컴플렉스의 어리둥절한 모습은 말할 것도 없습니다.
일반적으로 질문이 잘못 제기되었습니다. 개발자는 게으르지 않고 이 세계의 자멸을 통해 나머지 세계가 스스로 적응하도록 강요해서는 안 됩니다.
자, "나머지"에 대해 다시 생각해 봅시다. 명명된 상수 식별자가 도입된 이유는 무엇입니까? - 맞습니다. 동일한 식별자를 사용하기 위해서입니다. 또한 이러한 식별자를 사용하기 위해 열거형의 구성원에게 할당된 특정 값을 알 필요는 절대 없습니다. 아니면 유능한 프로그래머가 식별자를 사용하는 대신 열거형 멤버 의 기본값을 찾은 다음 이 기본값을 기반으로 검사를 수행한다고 가정합니까?
저것들. 내가 이해한 대로 제안 자체를 구현하는 것은 어렵지 않습니까?
네, 사실 이 주제의 작가는 게으름 때문에 다른 사람의 세계를 파괴할 생각은 없었습니다. 그리고 개선을 위한 구체적인 제안을 했습니다. 그리고 그는 0 값이 오버로드되었다고 설명했습니다.
enum으로 명명된 요소의 이름에 대해 범위가 최소한 클래스임을 소개하고 싶습니다.
클래스에 대한 근거: 라이브러리(타사 포함) 및/또는 미리 정의된 라이브러리와 예기치 않게 충돌할 수 있는 고유한 이름을 제시해야 합니다. 또한, 열거형 SL, TP, PRICE 등의 요소에 대해 유사한 이름을 여러 클래스에서 동시에 사용할 수 있습니다. 갈등의 두려움 없이.
기능에 대한 근거: 중요하지 않지만 동시에
enum 범위라는 이름의 요소 이름을 소개하고 싶습니다.
클래스에 대한 근거: 라이브러리 및/또는 미리 정의된 이름과 예기치 않게 충돌할 수 있는 고유한 이름이 필요합니다. 또한, 열거형 SL, TP, PRICE 등의 요소에 대해 유사한 이름을 여러 클래스에서 동시에 사용할 수 있습니다. 갈등의 두려움 없이.
기능에 대한 근거: 중요하지 않지만 동시에
C++에서는 어떻습니까?
거기에서 다리는 역설이지만 지금에서야 (제한이있을 때) 왜 그것이 모두 거기에서 이루어졌는지 이해하기 시작했습니다 :)
물론 그것 없이도 할 수 있습니다 - 모든 클래스에 대한 쓰기는 고유한 이름이지만 대규모 프로그램의 경우에는 더욱 그렇습니다.
이것을 시도하십시오("초기화"의 경우):
WRONG_VALUE
상수는 모든 열거형 유형으로 암시적으로 캐스팅될 수 있습니다 .
-하나