Vala는 자동으로 C 코드로 생성자를 생성합니다. 이것은 * 새로운 명명 패턴을 따릅니다. 그래서 가장 간단한 예는 : 당신이 valac --ccode example.vala
이것을 컴파일하고 결과 C 코드를 보면
void main() {
new ExampleWithoutExplicitConstructor();
}
class ExampleWithoutExplicitConstructor {
}
당신은 _vala_main
통화 example_without_explicit_constructor_new()
표시되고이 후 example_without_explicit_constructor_construct()
를 호출합니다. example_without_explicit_constructor_construct()
은 해당 유형에 대해 g_object_new()
을 호출합니다. 형식을 만드는 g_object_new
의 일부로 어떤 변수도 초기화 할 수있는 example_without_explicit_constructor_instance_init()
을 호출합니다.당신은 C에서 알 수
void main() {
new ExampleWithoutExplicitConstructor();
}
class ExampleWithoutExplicitConstructor:Object {
private string example_field = "default";
public string an_object_property { get;
set;
default = "this object properties default string";
}
}
: 여기
때문에 전체
GObject
클래스이며, 기본 값 필드와 기본 값으로 속성이,
Object
에서 상속 더 복잡한 예입니다 코드는
_new
,
_construct
,
g_object_new
,
_instance_init
패턴이 동일합니다. Vala가 수행 한 작업은
_instance_init
으로 설정되어 필드 및 속성의 기본값을 초기화합니다.
기본값이없는 공용 필드는 null입니다. 인스턴스 데이터가 들어있는 struct
의 정의에 나타납니다. 비공개 필드는 비슷하지만 인스턴스의 경우 개인 struct
에 보관됩니다. 예제를 가지고 노는 것으로 이것을 볼 수 있습니다.