{{위키데이터 속성 추적}}
{{번역 확장 필요|1=en|2=Haxe}}
{{낡음|날짜=2021년 12월 2일}}
{{소프트웨어 정보
| name = Haxe
| logo = Haxe logo.svg
| logo size = 80px
| paradigm = [[프로그래밍 패러다임|다중 패러다임]]
| released = {{시작 날짜와 나이|2005}}
| license = [[GNU GPL|GPL]] 2.0, 라이브러리: [[MIT 라이선스|MIT]]
| developer = Haxe 재단
| latest release version = {{wikidata|property|reference|edit|Q285886|P348}}
| latest release date = {{wikidata|qualifier|Q161053|P348|P577}} ({{Time ago| {{wikidata|qualifier|raw|Q161053|P348|P577}} }})
| latest preview version = 
| latest preview date = 
| typing = static, dynamic (annotation을 통해), nominal
| operating system = [[안드로이드 (운영 체제)|안드로이드]], [[iOS]], [[리눅스]], [[macOS]], [[마이크로소프트 윈도우|윈도우]]
| platform = [[ARM 아키텍처|ARM]]; [[IA-32]], [[x86-64]]
| file ext = .hx, .hxml
| website = {{URL|haxe.org}}
| influenced by = [[액션스크립트]], [[OCaml]], [[자바 (프로그래밍 언어)|자바]]
| programming language = [[OCaml]]
}}
'''Haxe'''는 각기 다른 수많은 [[컴퓨팅 플랫폼]]을 대상으로 하나의 코드 기반으로 [[애플리케이션]]과 [[소스 코드]]를 생성할 수 있는, 고급 [[크로스 플랫폼]] [[멀티 패러다임]] [[프로그래밍 언어]]이자 [[컴파일러]]이다.<ref name="Haxe-capitalisation">{{웹 인용|url=https://groups.google.com/d/topic/haxelang/O7PB-ZrX4i4/discussion |title=Nicolas' announcement of spelling change on Haxe official mail list}}</ref><ref name="b2">{{서적 인용|first=Franco |last=Ponticelli |date=2008-02-11 |title=Professional haXe and Neko |url=https://books.google.com/books?id=nkReDryjU3UC&dq=haxe&hl=en&sa=X&ved=0CCoQ6AEwAmoVChMIobHLuPaUxwIVy9SOCh2PWAFf |location= |publisher=Wiley |isbn=0470122137 |access-date= }}</ref><ref name="b5">{{서적 인용|first=Michael |last=Ivanov |date=2011-05-24 |title=Away3D 3.6 Cookbook |url=https://books.google.com/books?id=4yAcDM-qQDsC&pg=PT631&dq=haxe+flash&hl=en&sa=X#v=onepage&q=haxe%20flash&f=false |location= |publisher=Packt Publishing Ltd |isbn=1849512817 |access-date= }}</ref><ref name="gs_consoles">{{웹 인용|url=http://gamasutra.com/blogs/LarsDoucet/20150603/245099/HaxeOpenFL_for_home_game_consoles.php|title=Haxe/OpenFL for home game consoles|first=Lars|last=Doucet|publisher=Gamasutra|date=2015-06-03}}</ref> [[GNU GPL]] 버전 2로 배포되는 [[자유-오픈 소스 소프트웨어]]이며 표준 라이브러리의 경우 [[MIT 라이선스]]를 따른다.

== 언어 ==
Haxe는 [[객체 지향 프로그래밍]], [[제네릭 프로그래밍]], 다양한 [[함수형 프로그래밍]] 구조체를 지원하는 범용 목적의 언어이다. 반복, 예외 처리, 코드 반영 등의 기능들 또한 이 언어와 라이브러리의 내장 기능들이다.<ref name="language-reference">{{웹 인용|url=http://Haxe.org/ref |title=Haxe language reference |url-status=dead |archiveurl=https://web.archive.org/web/20120502064424/http://haxe.org/ref |archivedate=2012-05-02 |df= }}</ref>

=== 클래스 ===
<syntaxhighlight lang="haxe">
interface ICreature {
    public var birth:Date;
    public var name:String;

    public function age():Int;
}

class Fly implements ICreature {
    public var birth:Date;
    public var name:String;

    public function age():Int return Date.now().getFullYear() - birth.getFullYear();
}
</syntaxhighlight>

=== 열거형 ===
<syntaxhighlight lang="haxe">
enum Color {
    red;
    green;
    blue;
    rgb( r : Int, g : Int, b : Int );
}

class Colors {
    static function toInt ( c : Color ) : Int {
        return switch ( c ) {
            case red: 0xFF0000;
            case green: 0x00FF00;
            case blue: 0x0000FF;
            case rgb(r, g, b): (r << 16) | (g << 8) | b;
        }
    }
    static function validCalls() {
        var redint = toInt(Color.red);
        var rgbint = toInt(Color.rgb(100, 100, 100));
    }
}</syntaxhighlight>

=== 익명(무명) 형식 ===
<syntaxhighlight lang="haxe">
typedef AliasForAnon = { a:Int, b:String, c:Float->Void };
</syntaxhighlight>

=== 함수형 ===
<syntaxhighlight lang="haxe">
typedef F = Int->String->Float;

typedef F2 = Int->String->F;
typedef F3 = Int->String->(Int->String->Float);
</syntaxhighlight>

=== 추상형 ===
<syntaxhighlight lang="haxe">
abstract Kilometer(Float) {
    public function new(v:Float) this = v;
}

abstract Mile(Float) {
    public function new(v:Float) this = v;
    @:to public inline function toKilometer():Kilometer return (new Kilometer(this / 0.62137));
}

class Test {
  static var km:Kilometer;
  static function main(){
    var one100Miles = new Mile(100);
    km = one100Miles;

    trace(km); // 160.935
  }
}
</syntaxhighlight>

=== 구조적 타이핑 ===
<syntaxhighlight lang="haxe">

class FooBar {

   public var foo:Int;
   public var bar:String;

   public function new(){ foo=1; bar="2";}

   function anyFooBar(v:{foo:Int,bar:String}) trace(v.foo);

   static function test(){
        var fb = new FooBar();
        fb.anyFooBar(fb);
        fb.anyFooBar({foo:123,bar:"456"});
   }
}
</syntaxhighlight>

== 같이 보기 ==
* [[다트 (프로그래밍 언어)]]
* [[님 (프로그래밍 언어)]]
* [[클로저 (프로그래밍 언어)]]
* [[커피스크립트]]
* [[타입스크립트]]
* [[스칼라 (프로그래밍 언어)]]
* [[발라 (프로그래밍 언어)]]
* [[Emscripten]]
== 각주 ==
{{각주}}

== 외부 링크 ==
{{위키공용분류}}
* {{공식 웹사이트}}

{{어도비 플래시}}
{{자바스크립트}}

{{전거 통제}}

[[분류:프로그래밍 언어]]
[[분류:함수형 프로그래밍 언어]]
[[분류:다중 패러다임 프로그래밍 언어]]
[[분류:GPL 라이선스 소프트웨어]]
[[분류:패턴 매칭 프로그래밍 언어]]
[[분류:소스 대 소스 컴파일러]]
[[분류:정적 타입 프로그래밍 언어]]
[[분류:객체 기반 프로그래밍 언어]]