Haxe는 각기 다른 수많은 컴퓨팅 플랫폼을 대상으로 하나의 코드 기반으로 애플리케이션소스 코드를 생성할 수 있는, 고급 크로스 플랫폼 멀티 패러다임 프로그래밍 언어이자 컴파일러이다.[2][3][4][5] GNU GPL 버전 2로 배포되는 자유-오픈 소스 소프트웨어이며 표준 라이브러리의 경우 MIT 라이선스를 따른다.

Haxe
Haxe logo.svg
개발자Haxe 재단
발표일2005년(18년 전)(2005)
안정화 버전
4.2.5[1] 위키데이터에서 편집하기 / 2023년 3월 30일 (27시간 전)
저장소
프로그래밍 언어OCaml
운영 체제안드로이드, iOS, 리눅스, macOS, 윈도우
플랫폼ARM; IA-32, x86-64
라이선스GPL 2.0, 라이브러리: MIT
웹사이트haxe.org

언어편집

Haxe는 객체 지향 프로그래밍, 제네릭 프로그래밍, 다양한 함수형 프로그래밍 구조체를 지원하는 범용 목적의 언어이다. 반복, 예외 처리, 코드 반영 등의 기능들 또한 이 언어와 라이브러리의 내장 기능들이다.[6]

클래스편집

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();
}

열거형편집

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));
    }
}

익명(무명) 형식편집

typedef AliasForAnon = { a:Int, b:String, c:Float->Void };

함수형편집

typedef F = Int->String->Float;

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

추상형편집

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
  }
}

구조적 타이핑편집

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"});
   }
}

각주편집

  1. https://github.com/HaxeFoundation/haxe/releases/tag/4.2.5.
  2. “Nicolas' announcement of spelling change on Haxe official mail list”. 
  3. Ponticelli, Franco (2008년 2월 11일). 《Professional haXe and Neko》. Wiley. ISBN 0470122137. 
  4. Ivanov, Michael (2011년 5월 24일). 《Away3D 3.6 Cookbook》. Packt Publishing Ltd. ISBN 1849512817. 
  5. Doucet, Lars (2015년 6월 3일). “Haxe/OpenFL for home game consoles”. Gamasutra. 
  6. “Haxe language reference”. 2012년 5월 2일에 원본 문서에서 보존된 문서. 

외부 링크편집

  • Haxe - 공식 웹사이트