์ธ์ด๋
Haxe ๊ตฌ๋ฌธ์ ECMAScript์ ๊ฐ๊น๊ณ
ํด๋์ค ํ
์คํธ {
์ ์ ํจ์ ๋ฉ์ธ() {
var ์ฌ๋๋ค = [
"์๋ฆฌ์๋ฒ ์ค" => "ํ๋ก๊ทธ๋๋ฐ",
"์กฐ์" => "๋์์ธ"
];
for (people.keys()์ ์ด๋ฆ) {
var ์ง์
= ์ฌ๋[์ด๋ฆ];
Trace('$name์ $์ผ์ ํด์ ์๊ณ๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค!');
}
}
}
์ฃผ์
- "String->Int->Bool" ๋์ ํจ์ ์ ํ "(name:String, age:Int)->Bool" ๋๋ "(String, Int)->Bool"์ ์ง์ ํ๊ธฐ ์ํ ์๋ก์ด ๊ตฌ๋ฌธ์ ๋๋ค.
- ํ์ดํ ํจ์ ๊ตฌ๋ฌธ์ "function(a, b) return a + b" ๋์ "(a, b) -> a + b"์ ๋๋ค.
- Null ๊ฐ ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค(์คํ์ ๊ธฐ๋ฅ, ํน์ ํ๋, ํด๋์ค ๋๋ ํจํค์ง์ ๋ํด ์ ํ์ ์ผ๋ก ํ์ฑํ๋จ).
- "final" ํค์๋๋ ๋ณ๊ฒฝํ ์ ์๋ ํด๋์ค ํ๋์ ์ง์ญ ๋ณ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค. "final"์ ์์์ ์ํด ์ฌ์ ์๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์์๋ ์ ์๋ ํด๋์ค/์ธํฐํ์ด์ค์ ๋ํด ํจ์๋ฅผ ์ ์ํ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
์ง์ Neko๋ฅผ ์ ์ธํ ๋ชจ๋ ์ปดํ์ผ ๋์์ ๊ธฐ๋ณธ ์ ํ "String"์ ๋ํ ์ ๋์ฝ๋ ํ์ค์ ๋๋ค. - ์ฒ์๋ถํฐ ๋ค์ ์์ฑ๋ ๋ด์ฅ ํต์ญ์ฌ(์ด์ ์ด๋ฆ์ด ๋ถ์)
ํ๊ฐ . ์๋ก์ด ์ธํฐํ๋ฆฌํฐ ๋๋ถ์ ์คํฌ๋ฆฝํธ์ ๋งคํฌ๋ก๊ฐ ํจ์ฌ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค. ๋ํํ ๋๋ฒ๊น ๋ชจ๋๊ฐ ์ง์๋ฉ๋๋ค. - ์ปดํ์ผ์ ์ํ ์๋ก์ด ํ๊ฒ ์์คํ
(target)
ํด์๋งํฌ - JIT ๋๋ C์ฉ ๋ฐ์ดํธ์ฝ๋ ์ปดํ์ผ์ ์ง์ํ๋ Haxe์ฉ์ผ๋ก ํน๋ณํ ์ค๊ณ๋ ๊ณ ์ฑ๋ฅ ๋ฐํ์์ C์์ ํตํฉ์ด ์ฉ์ดํ๊ณ ํ์ ์์ค ์ซ์ ์ ํ ๋ฐ ํฌ์ธํฐ์ ๋ํ ์ก์ธ์ค๋ ์ ๊ณตํฉ๋๋ค. - ์๋ก์ด JVM ๋์ - Java์์ ๋์์ ์ง์ ํ ๋ "-D jvm" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ Java ์ฝ๋์ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ jvm ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ํจ์๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ ์์ ์์ ์ ์ธ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์ธ๋ผ์ธ ๋ฐฐํฌํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ํฌํจ ๊ฐ๋ฅ์ฑ
์ ์ ํ์ฅ "@:using(path.ToExtension)"์ ์ฌ์ฉํ์ฌ ์ ํ(์: "enum")์ ์ ์ธํ ๋. - ์ด์ ์ถ์ ์ ํ์ "obj.foo = bar" ํํ์์ ๋ค์ ๋ก๋ํ๊ธฐ ์ํด "@:op(ab)" ์ฐ์ฐ์์ "set" ๋ฒ์ ์ ์ง์ํฉ๋๋ค.
- "for" ๋ฃจํ ๊ตฌ๋ฌธ์ ์ด์ ํค-๊ฐ ๋ฐ๋ณต์ ์ง์ํฉ๋๋ค: "for (key => value in collection) {}".
- ํํ์์์ XML๊ณผ ์ ์ฌํ ๋งํฌ์ ์ฌ์ฉ ์ง์: "var a = ``hi/>;" ํ์ฌ ์ด ๊ธฐ๋ฅ์ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ ๊ตฌ๋ฌธ ๋ถ์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ค๊ณ ๋จ๊ณ์ ์์ต๋๋ค.
- ์ต๋ช ๊ตฌ์กฐ ์ ํ์ "์ ์ฒด" ํ๊ธฐ๋ฒ์์ ์ ํ์ ํ๋์ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. "{ var ?f:Int; }"(์งง์ "{ ?f:Int }"์ ๋์).
- ์ด๊ฑฐํ ๊ฐ์ ์ด์ ํจ์ ์ธ์์ ๊ธฐ๋ณธ๊ฐ์ด ๋ ์ ์์ต๋๋ค: "function foo<T>(option:Option<T> = None)".
- "enum abstract Name(BasicType) {}" ๊ตฌ๋ฌธ์๋ ๋ ์ด์ "enum"์ "@:" ์ ๋์ฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- ์ถ์ ์ด๊ฑฐ์ ๋ํ ์๋ ๋ฒํธ ๋งค๊ธฐ๊ธฐ:
์ด๊ฑฐํ ์ถ์ Foo(Int) {
๋ณ์ A; // 0
๋ณ์ B; // 1
}
์ด๊ฑฐํ ์ถ์ Bar(String) {
๋ณ์ A; // "ใ "
๋ณ์ B; // "๋น"
} - "extern" ํค์๋์๋ ๋ ์ด์ "@:" ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
- "์ต์ ์ ์ ๊ฑฐํ์ต๋๋ค.๊ตฌํํ๋ค ๋์ "์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ํตํด ํด๋์ค ํ๋์ ์ก์ธ์คํฉ๋๋ค. ์ธ๋ถ ํด๋์ค ๋๋ ์ถ์ ์ ํ ๊ตฌํ์ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ์ฌ ์ต๋ช ๊ตฌ์กฐ ๋ฐ ์ ํ ๋งค๊ฐ๋ณ์ ์ ์ฝ ์กฐ๊ฑด์๋ง ์ ์ฉ๋๋ ์ ํ ๊ต์ฐจ์ ๋ํ "A & B" ๊ตฌ๋ฌธ์ ์ถ๊ฐํ์ต๋๋ค. ์ด์ ์ ์ฝ ์กฐ๊ฑด ๊ตฌ๋ฌธ์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- ๋น "Map" ์ธ์คํด์ค ์์ฑ์ "var map:Map<Int, String> = [];" ๊ตฌ๋ฌธ์ ํตํด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐฐ์ด๊ณผ ๋น์ทํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ "haxe.ds.ReadOnlyArray"๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ด์ ๋ฉํ๋ฐ์ดํฐ๋ ๋ค์์คํ์ด์ค("@:prefix.name function() {...}")๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์: "#if (some.flag ... #end").
- IDE์ ์ฌ์ฉ๋๋ ์๋ก์ด ์๋น์ค ํ๋กํ ์ฝ
VSCode์ฉ ํ๋ฌ๊ทธ์ธ . - Web API์ ๋ํ ์ธ๋ถ ์ ์(extern)๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋๋ฝ๋ ์ ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru