2008-10-16 8 views
5

'var : *'을 검색하는 데 약간 까다 롭습니다. 대부분의 검색 엔진에서는 찾을 수 없기 때문입니다.정확히 var x : *는 actionscript에서 무엇을 의미합니까?

나는 정확히 VAR 명확하지 않다 : * 수단을, 말을 비교 VAR : 개체

나는 그것이 나 같은 객체에 임의의 속성을 설정할 수 있습니다 것이라고 생각

:

var x:* = myObject; 
x.nonExistantProperty = "123"; 

그러나 이것은 제공 오류 :

Property nonExistantProperty not found on x 

* 정확하게는 무엇을 의미합니까?

편집 : 원래 var : *를 올바른 var x : *로 고정했습니다. 인터넷 연결이 끊어졌습니다

답변

1

"유형이 지정되지 않은"유형입니다. 변수가 어떤 유형이든 사용할 수 있음을 의미합니다. 기본적으로 다음을 사용하는 것과 동일한 효과가 있습니다.

var x = myObject; 
1

즉, 형식이 지정되지 않고 모든 유형과 함께 사용할 수 있습니다. 그러나 임의 속성을 설정할 수는 없습니다. 그것은 당신이 그것을 설정 한 어떤 유형처럼 행동 할 것입니다. 정확한 구문은 다음과 같습니다.

2

유형이 지정되지 않은 변수를 지정하여 기본적으로 유형을 지정할 수 있습니다. 코드

var x:* = oneTypeObject; 

변수 x를 생성 한 다음 변수 x에 oneTypeObject을 할당합니다. 다음과 같이 전혀 다른 유형을 할당 할 수 있습니다.

var x:* = anotherTypeObject; 

그러나 임의로 설정하거나 속성에 액세스 할 수는 없습니다. 기본 유형 (oneTypeObject 또는 anotherTypeObject)에 존재해야합니다.

두 유형 모두 동일한 이름의 속성을 가질 수 있습니다. 기본 유형에 신경 쓰지 않고 x에서 해당 속성에 액세스하거나 설정할 수 있습니다.

12

다른 답변을 확장하면 유형이 별표 인 것으로 선언하는 것이 정확히이며 형식이 지정되지 않은 채로 남습니다.

var x:* = {}; 
var y = {}; // equivalent 

그러나 객체에 존재하지 않는 속성을 할당 할 수 있는지 여부의 문제는 참조의 종류와는 아무 상관이 없으며, 개체가 동적의 인스턴스인지 여부에 의해 결정된다 수업. 객체는 동적이며 이후

예를 들어, 문자열되지 않습니다 : 당신은 항상 관계없이 사용할 참조 어떤 종류의 객체에 새 속성을 할당하는 방법을

var o:Object = {}; 
o.foo = 1; // fine 
var a:* = o; 
a.bar = 1; // again, fine 

var s:String = ""; 
s.foo = 1; // compile-time error 
var b:* = s; 
b.bar = 1; // run-time error 

참고. 마찬가지로 String에 새로운 속성을 할당 할 수는 없지만 형식화 된 참조를 사용하면 컴파일러에서이를 catch하고 타입 지정되지 않은 참조는 컴파일러에서 b이 동적인지 여부를 알지 못하므로 오류가 발생합니다 런타임에.

또한, 타입 별표에 대한 문서 참조 여기서 볼 수

http://livedocs.adobe.com/labs/air/1/aslr/specialTypes.html# *

(. 마크 업 엔진 때문에 별표, 그 linkify 거부)

0

이전에 말했듯이, 형식이 지정되지 않았으므로 모든 종류의 데이터를 보유 할 수 있습니다. 그러나 작업에서는이를 그대로 취급 할 수 없습니다. 예를 들어,이 유효한 코드 :

var untyped:* = functionThatReturnsSomeValue(); 

하지만 당신은 더 한 단계를 이동하는 경우, 당신은 조심해야하거나 물리지 수 있습니다

var name:String = untyped.name; 

이제 개체가 그 함수에 의해 반환되는 경우 ID가 "name"인 필드가있는 객체 일 때, 당신은 분명합니다. 그러나 이것이 확실한 경우가 아니라면 입력 된 객체를 사용하는 것이 좋습니다. 이런 식으로 런타임에 오류가 발생할 수있는 경우 컴파일러에서 경고 메시지를 표시합니다.

(elsewhere) 
public class TypedObject() 
{ 
    public var name:String = ""; 
} 

(and the code at hand) 
var typed:TypedObject = functionThatReturnsTypedObject(); 
var name:String = typed.name; 
관련 문제