ActionScript 3.0의 연산자 오버로드 부족
-
09-06-2019 - |
문제
ActionScript에서 제가 가장 그리워하는 것 중 하나는 연산자 오버로딩(특히 ==)이 없다는 것입니다.나는 내 클래스에 "비교" 메서드를 추가하여 이 문제를 해결했지만 내장된 사전과 같은 것을 사용하려는 경우와 같은 많은 경우에는 도움이 되지 않습니다.
이 문제를 해결할 수 있는 좋은 방법이 있습니까?
해결책
아니요.
하지만 추가해서 나쁠 건 없지 equals
메소드를 자신의 클래스에 추가하세요.절대 사용하지 않으려고 노력해요 ==
객체를 비교할 때(동일 ===
, 이는 객체의 경우에도 동일함)만 확인하기 때문에 신원 .
안타깝게도 Flash 및 Flex의 모든 컬렉션은 ID가 필요한 유일한 평등 척도라고 가정합니다.
Flex에는 누군가가 이 문제를 한 번에 완화하고 싶어했지만 포기한 것처럼 보이는 힌트가 있습니다.라는 인터페이스가 있습니다 IUID, 그리고 그것은 에서 언급된다. Flex 개발자 가이드 , 그러나 어디에도 사용되지 않습니다.Flex의 컬렉션조차도 동등성을 결정하는 데 이를 사용하지 않습니다.그리고 Flash에 대한 솔루션을 요청하셨기 때문에 어차피 도움이 되지 않았을 수도 있습니다.
나는 내 블로그에 (Flex의 맥락에서) 이에 대해 더 많이 썼습니다: 평등은 없나요?.
다른 팁
예, 가능합니다. (하지만 조심하세요. 해킹되기 때문이죠.) http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/
튜토리얼에서 +=, -= 연산자 오버로딩에 대해 썼습니다.하지만 ==로도 가능합니다. 명확하지 않은 경우 이에 대해 더 자세히 작성할 수 있습니다.
아, 이 접근 방식에는 몇 가지 단점이 있습니다(드물게 위험할 수도 있습니다).프로덕션에 사용하기 전에 다시 한 번 생각해보세요.
편집하다:
테스트 후에는 +=, -=의 트릭이 == 연산자에 적용되지 않는 것 같습니다(이치에 맞습니다).오해의 소지가 있는 정보를 올려서 죄송합니다.