Die Python-Ausgabe ist in Haxe 3.2 verfügbar. Probieren wir es also aus.
Laden Sie die neueste Version von der offiziellen Haxe Downloads herunter und installieren Sie sie.
Wenn Sie Homebrew auf Ihrem Mac verwenden, ist Folgendes ebenfalls in Ordnung.
$ brew install haxe --HEAD
Alternativ können Sie Building Haxe lesen und selbst erstellen.
Ausgelassen, weil es viele andere Artikel gibt. Im Moment scheint Haxe nur Python3 ausgeben zu können.
Hello World
Versuchen wir die Python-Ausgabe mit Official Hello World.
Erstellen Sie zunächst HelloWorld.hx mit den folgenden Inhalten.
HelloWorld.hx
class HelloWorld {
static public function main() {
trace("Hello World");
}
}
Kompilieren Sie das Obige mit haxe in helloworld.py.
$ haxe -main HelloWorld -python helloworld.py
Die Option -main ist die Hauptklasse, und die Option -python ist der Dateiname, der durch Angabe von Python ausgegeben werden soll. Weitere Informationen finden Sie unter Compiler-Verwendung.
Alternativ können Sie compile.hxml wie unten gezeigt erstellen und kompilieren.
compile.hxml
-python helloworld.py
-main HelloWorld
$ haxe comple.hxml
#Haxe oben-main HelloWorld -python helloworld.Hallo Welt wie Py.py wird ausgegeben
Wenn die Kompilierung erfolgreich ist, führen Sie die Ausgabe helloworld.py aus.
$ python3 helloworld.py
Hello World
Hello World wurde sicher ausgegeben.
Darüber hinaus war die Ausgabe von helloworld.py zu diesem Zeitpunkt wie folgt.
helloworld.py
class HelloWorld:
@staticmethod
def main():
print("Hello World")
HelloWorld.main()
Sie können die Befehlszeilenargumente von Sys.args abrufen.
Main.hx
class Main {
static public function main():Void {
var args = Sys.args();
for (arg in args) {
Sys.println(arg);
}
}
}
Drucken Sie eine Liste der Befehlszeilenargumente mit [Sys.println](](http://api.haxe.org/Sys.html).
$ haxe -main Main -python main.py
$ python3 main.py foo
foo
$ python3 main.py foo bar
foo
bar
Zu diesem Zeitpunkt hatte die Ausgabe main.py 378 Zeilen. (lange!) Wahrscheinlich, weil ich angefangen habe, Sys zu verwenden, und es enthält einige Extras. Es wäre jedoch interessant, die Ausgabe Python zu lesen.
Versuchen Sie, die Datei mit [sys.io.File] auszugeben (http://api.haxe.org/sys/io/File.html).
Main.hx
import sys.io.File;
class Main {
static public function main():Void {
var output = File.write("output.txt");
output.writeString("test\n");
output.close();
}
}
$ haxe -main Main -python main.py
$ python3 main.py
$ cat output.txt
test
Wenn Sie python.lib.Codecs für die Dateiausgabe verwenden, entspricht dies Python-Codecs.
Main.hx
import python.lib.Codecs;
class Main {
static public function main():Void {
var file = Codecs.open("output.txt", "w");
file.write("test\n");
}
}
$ haxe -main Main -python main.py
$ python3 main.py
$ cat output.txt
test
Ich werde es hier nicht schreiben, weil es lang ist, aber wenn Sie die eigentliche Ausgabe main.py lesen, können Sie sehen, dass es codecs.open verwendet.
Natürlich kann python.lib.Codecs nur bei der Ausgabe von Python verwendet werden. Seien Sie also vorsichtig. (Sys.io.File kann für andere Plattformen wie C ++, PHP, Neko kompiliert werden.)
Einige der Standardbibliotheken von Python sind weiterhin verfügbar, wie im Fall der Verwendung der obigen Codecs. Aus Problem Nr. 2924 geht hervor, dass ein Teil von sys.net und die gesamte sys.db nicht implementiert wurden (wird in Kürze implementiert). Sie können die verfügbaren im python.lib-Paket überprüfen.
Es gibt eine von Haxe implementierte HTML-Parser-Bibliothek namens HtmlParser. Da es sich um eine (wahrscheinlich reine) Haxe-Implementierung handelt, sollte sie auf jeder von Haxe unterstützten Plattform ausgegeben werden können. Ja, natürlich in Python!
Deshalb werde ich die Haxe-Bibliothek installieren und verwenden.
$ haxelib install HtmlParser
Main.hx
import sys.io.File;
import htmlparser.HtmlDocument;
class Main {
static public function main():Void {
var html = new HtmlDocument(File.getContent("example.html"));
var titles = html.find(">html>head>title");
trace(titles[0].innerHTML);
}
}
Geben Sie bei Verwendung einer Bibliothek die Bibliothek an, die beim Kompilieren mit der Option -lib verwendet werden soll.
$ haxe -main Main -python main.py -lib HtmlParser
example.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title of Example</title>
</head>
<body>
<h1>Example</h1>
</body>
</html>
$ python3 main.py
Title of Example
Sie können sehen, dass Sie den HTML-Code analysieren und den Titel abrufen können.
Mit anderen Worten, jede (reine) Haxe-Implementierungsbibliothek kann für Python verwendet werden, und dieselbe Bibliothek kann für andere Plattformen verwendet werden. tolle! (Natürlich gibt es in Python bereits eine Reihe hervorragender Bibliotheken für HTML-Parser ...)
Recommended Posts