Extern
외부 라이브러리를 연동하는 경우 extern 키워드를 사용합니다. 외부 라이브러리는 코더스로 표현하기 어렵거나, 보안상 분리해야할 경우, 기존의 라이브러리를 연결해야 할 경우에 사용합니다. 특히 코더스는 Flutter 플랫폼을 위해 많은 Widget 클래스들을 extern 으로 제공하고 있습니다.
dart
extern {
@dotnet[import="..."]
@springboot[import="..."]
enum UserType {
}
@springboot[import='...']
service MqttService {
...
func sendTopic(/* topic */ string, /* payload */ string) bool;
...
}
}extern 블락 안에 선언되는 열거형이나 클래스 등은 각 플랫폼마다 import 경로가 다를 것이므로 원하는 플랫폼마다 import 경로를 작성해야 합니다. 중복 경로가 있을 경우에는 코더스는 이를 감지하여 하나만 작성하게 됩니다.
함수는 파라미터 명은 제외하고 타입만 나열해야 합니다.
dart
extern {
// StringBuffer
@flutter[import='dart:core']
class StringBuffer {
constructor(string);
func write(string) void;
func writeln(string) void;
func toString() string;
}
// Duration
@flutter[import='dart:core']
class Duration({
seconds: int32,
hours: int32,
minutes: int32,
milliseconds: int32,
microseconds: int32,
}) {
static var zero Duration;
}
}위 예시는 Flutter 외부 클래스들 입니다. Duration 클래스는 static 맴버 변수를 정의하고 있습니다.
dart
var a = Duration({seconds: 3});
var b = Duration.zero;와 같이 사용될 것입니다.
extern 키워드는 코더스가 다루기 어렵거나 분리해야 할 경우 언제든지 유연하게 연동할 수 있는 기능입니다.