steht Kopf und Schultern über andere Möglichkeiten.
... beste String-Manipulation Unterstützung, während einfach zu integrieren?
Lua ist entworfen in C eingebettet werden; die API ist klar und einfach zu verwenden; Die Dokumentation ist großartig.
Einige andere Antworten haben Lua's String-Fähigkeiten verunglimpft. Ich denke sie unterschätzt Lua. Lua's String-Fähigkeiten finden tatsächlich einen "Sweet Spot" zwischen "nur Verkettung" und der vollen Komplexität regulärer Ausdrücke. Die Fähigkeit zur String-Formatierung ist sehr stark und das Akkumulieren von Strings durch "Puffer" oder Tabellen ist einfach und effizient.
String-Scannen ist meiner Meinung nach einer der besten Teile des Designs. Es hat keine "oder" Muster, aber ansonsten gibt es einen großen Teil von dem, was man von regulären Ausdrücken erhält, einschließlich einer sehr mächtigen und eleganten "Capture" -Funktion. Zum Beispiel kann ich einen String in Hex durch jedes einzelnes Zeichen Erfassung und Anwendung eine Funktion, um es konvertieren:
s:gsub('.', function(c) return string.format("%02x", string.byte(c)) end)
Oder ich kann nicht-alphanumerische Zeichen, Nicht-Leerzeichen in Oktal entkommen:
s:gsub('[^%w%s]', function(c) return string.format([[\%03o]], string.byte(c)) end)
Einige der Funktionen auf dem Display hier:
Das Escape-Zeichen für String-Scanning %
ist, das ist verschiedene aus dem Escape-Zeichen für die String-Quotierung, die \
ist. Diese Entscheidung ist brillant und sollte eine Auszeichnung für sich :-)
Es gibt mehrere Mechanismen für die Quotierung Literalzeichenfolgen, einschließlich [[...]], in dem keine Zeichen zu entkommen gewinnen. Wenn Sie Zeichenfolgen mit umgekehrten Schrägstrichen in ihnen generieren oder zuordnen möchten (wie LaTeX zum Beispiel), ist dies ein Glücksfall.
Wenn Sie die volle Leistung eines kontextfreien Parser möchten, können Sie immer LPEG verwenden, eine Bibliothek von einem Lua-Designer geschrieben.
Leistung ist ziemlich wichtig (vor allem Anlaufzeit)
Lua gewinnt konsequent Leistung ausgezeichnet. Der Start ist blitzschnell: Das gesamte System (einschließlich Compiler, Bibliothek, Garbage Collector und Laufzeitsystem) passt in 150 KB. Um Pausenzeiten zu vermeiden, bietet Lua inkrementelle Garbage Collection. Siehe SO auch Why is Lua faster than other scripting languages?
Frage, die Sie Startup machen können noch schneller durch Ihre Skripte Vorkompilieren, aber ich habe nie es notwendig, diese — und weil Code kompiliert zu tun (wie auf den Quellcode im Gegensatz) ist nicht tragbar, Precompilieren verursacht normalerweise mehr Kopfschmerzen als es löst.
Needs leicht auf mehreren Plattformen
kompiliert werden
Lua kompiliert unter Verwendung von reinem ANSI C und nicht einmal POSIX erfordern. Ich habe eine Version auf meinem PalmOS PDA.
Muss eine Sprache sein, die noch in 5 Jahren sein wird.
Lua gibt es seit 1993. Darüber hinaus sind die beiden Mitglieder des Teams, die am meisten Unterstützung leisten, Professoren an der PUC-Rio. Lua ist ihr Lebensunterhalt. Schließlich besteht das gesamte System aus nur 17.000 Zeilen Code. Wenn Rio morgen von der Landkarte fiel, konnte jeder mit einem guten Undergraduate-Compiler-Kurs das System aufgreifen und aufrechterhalten. Es würde viele Freiwillige geben.
Ich habe ein wenig in Python und Lua aussehen, aber nicht wirklich weiß genug über sie
SO Which game scripting language is better to use: Lua or Python? Frage sehen.
Aber überhaupt nicht leicht in ein C-Programm einzubetten von dem, was ich verstehe. Kennst du anders? –
Ich habe es nie versucht, persönlich habe ich C/C++ nicht viel mehr als "Hello World" benutzt. Ich kenne mindestens ein (C++ ich denke) Opensource-Projekt, das es zwar einbettet, wenn Sie herumstochern und sehen wollen, wie es gemacht wird. –
Ja, wie heißt es? –