2012-11-27 3 views

답변

6

const은 컴파일시 상수를 의미합니다. 표현식 값은 컴파일시 알려 져야합니다. const은 "값"을 수정합니다. news.dartlang.org에서

,

"CONST는"다트에 조금 더 복잡하고 미묘한 의미를 가지고있다. const는 값을으로 수정합니다. const [1, 2, 3]와 같은 과 같은 컬렉션을 만들 때, 그리고 consture Point (2, 3)처럼 과 같은 객체를 생성 할 때 사용할 수 있습니다. 여기서 const는 객체의 전체가 딥 상태가 컴파일 타임에 완전히 결정될 수 있으며 객체가 고정되어 완전히 불변됨을 의미합니다.

당신이 사용하는 경우가 const 사용하고, 단지

const aConstCollection = const [x]; 다음 x = 5를 사용하지 않는 경우 다음 변수 x가

const aConstCollection = const [x]; 

같은 cosnt 모음에서 사용할 수있는

const x = 5 불법입니다.

class SomeClass { 
    static final someConstant = 123; 
    static final aConstList = const [someConstant]; //NOT allowed 
} 

class SomeClass { 
    static const someConstant = 123; // OK 
    static final startTime = new DateTime.now(); // OK too 
    static const aConstList = const [someConstant]; // also OK 
} 
+0

www.dartlang.org에서

더 많은 예제는 왜 정적없이 const를 사용할 수 없습니다? 내 const는 정적 클래스 범위가 필요하지 않으므로 왜 정적으로 선언해야합니까? – robbie

+0

@robbie 귀하의 상수는 각 인스턴스에 대해 반복 될 필요가 없습니다. 그것은 일정하기 때문에 결코 변하지 않을 것입니다. 왜 낭비 공간이 그것을 복제합니까? 상수의 정적 선언을 강요함으로써, 인스턴스가 생성 될 때마다 클래스에 한 번만 메모리에 저장됩니다. 나는이 설명이 C#과 Dart 모두에 적용된다고 생각한다. –

+1

Dart의 Const 값은 "정규화"되어 있으므로 인스턴스가 하나만 존재하므로 "정적 const"는 중복되므로 "const"이면 충분합니다. 실제로 [Seth Ladd의 기사] (http://news.dartlang.org/2012/06/const-static-final-oh-my.html)의 마지막 단락에서 "const"가 선호되는 스타일이고 "정적 const"는 낙심했다. – dharcourt

관련 문제