'상수'(const
)는 한 번만 설정할 수 있으며 개체 선언에 (일반적으로 즉시) 가까이 설정해야하는 개체입니다. 그래서 당신은이 작업을 수행 할 수 있습니다 : 당신이 이후에 설정할 수 있습니다 표시, 워드 프로세서
const val:String = 'hello world';
하지만이 될 것 같지 않습니다 : 대신
const val:String;
... 5 minutes later ...
val = 'hello world'
을 수행해야 사전 정의 된 시간 또는 순서를 지정할 수 있습니다. 위에 설명한대로 즉시 설정하는 것이 가장 좋습니다. "엄격 모드"로 컴파일하는 경우 은 위와 마찬가지로으로 설정해야합니다.
상수는 처리 시간에 좋습니다. 고정 값이기 때문에 런타임은 훨씬 더 효율적인 방식으로이를 다르게 저장할 수 있습니다. 구체적으로 기억할 수는 없지만, const는 표준 변수에 비해 오브젝트 액세스 시간이 크게 향상되었습니다.
static
은 액세스 수정 자이며, 마찬가지로 private
또는 public
이 있습니다 (다른 몇 가지 정보가 있습니다. 모든 정보를 읽어 보시기 바랍니다). 정적 객체는 한 번만 존재합니다. 표준 객체는 클래스가 인스턴스화/액세스 될 때마다 선언됩니다. 정적 객체는 처음 선언 될 때만 나타납니다. 그래서에 저장된 public static var
간단한 클래스 다음
public class ClassA {
public static var URL:String = "http://google.com";
public function ClassA(){
//hello world
}
}
을 고려하십시오. 내가 그렇게으로 클래스를 인스턴스화 할 때 :
var hello:ClassA = new ClassA();
URL
만든 구글의 URL로 설정됩니다. 정적 속성은 객체에 속하지 않으므로 hello.URL
에 액세스하려고하면 오류가 발생합니다. 대신 클래스 정의에 속합니다. 따라서 ClassA.URL
으로 액세스하십시오. ClassA의 범위 내에서 ClassA.URL
또는 URL
을 통해 액세스 할 수 있습니다. 일반적으로 정적 개체는 두 곳에서 사용됩니다.
- Util 클래스.
Math.PI
또는 Math.max()
이 좋은 예입니다.
- 단일 인스턴스를 저장해야하는 개체. 특정 시간에 한 명의 사용자로만 로그인 할 수있는 사용자 시스템에이 프로그램을 사용하고 싶습니다. 나는 일반적으로
User
개체를 가지고 있는데 여기에는 username
과 accountType
등이 저장되어 있습니다.
정적 개체는 좋고 나쁘다.수천 번 인스턴스화되고 값이 변경되지 않는 클래스의 경우, 이는 15 바이트 x 1000 또는 1.5 킬로바이트를 저장하는 대신 처음 15 바이트 만 저장하는 등 상당한 메모리 사용 이점을 제공합니다. 그러나 범위 문제와 일반적인 OOP 표준을 고려해야합니다. 당신은 그들이 정적 오브젝트와 Association Singletons (그것들은 정적 오브젝트와 같지 않습니다)에 의해 파란색이 될 때까지 주장 할 사람들을 찾을 것입니다. OOP 원리에 어긋나 기 때문에 절대 사용해서는 안됩니다. 사용자 객체에 정적 객체를 사용해야하는지 여부는 논란의 여지가 있습니다. 어떤 사람들은 Singleton (내 최신 프로젝트는 Singleton 대신에 실제로 사용됨)을 사용해야한다고 주장 할 것이고 어떤 사람들은 다른 방법을 사용해야한다고 주장 할 것이고 어떤 사람들은 객체를 통해 무한히 전달되어야하는 객체라고 주장 할 것이다. 그것은 절대적으로 악몽이다).
현실에서는 적합하다고 생각하는대로 사용하십시오. 당신은 개발자입니다. 프로젝트와 당신과 당신 팀에 가장 적합한 것이 무엇인지 알아보십시오.
는 (일반적으로 대부분의 클래스 기반 OOP 언어) AS3에서 액세스 한정자에 대한 좋은 일반적인 개요
가 static const
모두에서 혜택을 제공하기위한 상수에 대한 here 및 here을 읽어보십시오. 한 번만 존재하고 한 번만 설정되는 객체이므로 메모리 및 프로세스 시간 이점을 제공합니다. 일반적으로 변경되지 않지만 여러 번 액세스해야하는 값 (예 : Math.PI
또는 MouseEvent.MOUSE_DOWN
)을 저장해야하는 경우에 사용됩니다.
두 개의 상수가 분리 된 파일 인 경우 첫 번째 경우를 사용하지 않는 것이 좋습니다. as3 사양에 대해 확신 할 수 없기 때문에 질문에 대답하지 않지만 C++에서 정적 대 실패 초기화 순서라고하는 것이 있습니다. 이 경우 어떤 정적 const 변수를 먼저 초기화할지 알 수있는 방법이 없습니다. 아마도 as3에는 그런 문제가 없을 것입니다. – krizajb