12.1 타깃 특정 구문 접근(Accessing Target-specific Syntax)

12.1 타깃 특정 구문 접근(Accessing Target-specific Syntax)

특정 타깃을 위한 코드를 작성할 때, 그 타깃에서만 사용할 수 있고 Haxe 코드에서는 접근할 수 없는 특정 기능에 접근해야 할 수도 있습니다. 타깃별 Syntax API를 사용하면 이러한 기능에 여전히 접근할 수 있습니다:

중요 참고: 이 함수들을 사용하기 전에 Haxe 표준 라이브러리에 대안이 없는지 확인하세요. 결과 구문은 Haxe 컴파일러가 검증할 수 없으므로, 출력에 유효하지 않거나 오류가 발생하기 쉬운 코드가 생길 수 있습니다. 특정 기능이 표준 라이브러리에 있는지 확인할 때는 API 문서를 참조하세요. 타깃별 API는 타깃 이름을 딴 패키지에 배치됩니다. 예를 들어 JavaScript별 API는 최상위 js 패키지에 있습니다. 대부분의 타깃은 그 패키지에 그 타깃을 위한 몇 가지 공통 메서드를 제공하는 Lib 클래스를 가집니다.

Syntax.code(expr, args...)
since Haxe 4.0.0

raw 코드 표현식을 주입합니다. 표현식은 {0}, {1}, {2} 등을 포함할 수 있는 문자열이며, 이들은 함수에 제공된 대응 인자로 대체됩니다. 이는 코드가 Haxe 필드를 참조해야 할 때 중요한데, 생성된 출력에서 변수의 이름이 Haxe 코드의 이름과 일치하지 않을 수 있기 때문입니다. Haxe 컴파일러는 문자열이 제공되면 따옴표를 추가하는 것을 처리합니다. 이 함수는 값을 반환할 수도 있으며, 반환 타입은 항상 Dynamic입니다.

js.Syntax.code의 예:

var myMessage = "Is Haxe great?";
var output:Bool = js.Syntax.code("confirm({0})", myMessage);

생성된 JavaScript 출력:

var myMessage = "Is Haxe great?";
var output = confirm(myMessage);

다른 함수들은 해당 API 문서에 설명되어 있습니다. 여기에는 일반적으로 Haxe에서 사용할 수 없는 네이티브 연산자가 포함됩니다.

다른 플랫폼(Other platforms)

향후 릴리스에서 다른 타깃을 위한 Syntax API를 구현할 계획입니다. 그때까지는 타깃별 구문에 다른 플랫폼 중 일부에서 접근할 수 있으며, 덜 타입 안전한 방식으로 untyped 표현식을 사용합니다:

  • C++ untyped __cpp__(expr, args...)
  • C# untyped __cs__(expr, args...)
  • Java untyped __java__(expr, args...)
  • Lua untyped __lua__(expr, args...)

이 인자들은 Syntax.code와 정확히 동일한 의미론을 따릅니다.

출처: Accessing Target-specific Syntax

더 알아보기