Was würde es einfacher machen, wirklich mit Lua zu arbeiten?

8

Ich liebe Lua und benutze es für immer mehr Projekte als die primäre (nicht eingebettete) Sprache. Mein aktuelles Projekt nähert sich 10.000 Linien und wird wahrscheinlich bei ungefähr 15.000 Linien enden. Was hast du bei der Entwicklung in Lua in dieser Größenordnung als nützlich erachtet? Wogegen hast du den Kopf gestoßen und welche Lösungen hast du gefunden? Ich denke über Entwicklungstools, Sprachfunktionen & amp; Techniken, Module von Drittanbietern?

Meine Top 3:

  1. strict.lua - Ich benutze eine modifizierte Version davon. Ohne auf Zugriffe ungenutzter / unbeabsichtigter Variablen aufmerksam zu werden, würde ich verrückt werden.

  2. Koroutinen - nicht für ihre Multithreading-Fähigkeit, sondern für ihre Fortsetzbarkeit. Sehr nützlich, um die Implementierung von State Machines zu vereinfachen.

  3. Serialisierungsfunktion - unverzichtbar für das Auslagern von Tabelleninhalten und das Speichern von Tabellen auf der Festplatte (ich benutze dies oft, wenn ich sonst wahrscheinlich nach einer Datenbank gesucht hätte).

Meine Wunschliste:

  1. Visueller Debugger für OS X. Ich benutze jetzt print () s, aber ein Debugger, der mir die Quelldateien in einem Schritt weitergibt, wäre großartig.

  2. Eine Continue-Anweisung. Verwenden Sie die Wiederholung ..., bis eine echte Problemumgehung hässlich ist und zu viele verschachtelte ifs komplex und hässlich werden.

  3. Ein Metamethode, das aufgerufen wird, wenn ein vorhandenes Tabellenelement geändert wird.

Irgendwelche anderen Tipps für eine größere Lua-Entwicklung?

    
proFromDover 08.10.2010, 05:12
quelle

3 Antworten

6
  

Eine Continue-Anweisung. Verwendung der   wiederhole ... bis die echte Problemumgehung ist   hässlich und zu viele verschachtelte ifs werden   komplex und hässlich.

Lassen Sie Ihren Schleifenkörper zu einem Funktionsaufruf werden; dann wird return zu continue .

  

Ein Metamethode, das aufgerufen wird, wenn ein   Das vorhandene Tabellenelement wurde geändert.

Sie können dies selbst implementieren, indem Sie eine Proxy-Tabelle B verwenden, die alle tatsächlichen Daten für Tabelle A speichert - die newindex / index-Metamethoden auf A intercept schreibt / liest und ändert / sucht stattdessen aus Tabelle B. Da A nichts geschrieben wird, treffen alle Schreibvorgänge auf newindex.

    
Amber 08.10.2010 05:16
quelle
3

Basierend auf Ihren Top3- und Wunschlisten, hier sind die Produkte, an denen ich gearbeitet habe und die ich empfehlen kann (zumindest basierend auf dem Feedback, das ich erhalten habe):

  1. MobDebug : Ein Remote-Debugger, der auf RemDebug basiert, aber mit einer Vielzahl von Korrekturen und neuen Funktionen.
  2. ZeroBrane Studio : eine Lua-IDE, die einen Debugger mit allen erwarteten Funktionen (StepIn / Over / Out, Pause, Watch, Stack, Breakpoints, Remote) bietet Shell, Serialisierung, Coroutine-Unterstützung und mehr) und läuft unter OSX und Windows. Es bietet eine nahtlose Integration mit MobDebug in der IDE. Ich habe mehrere Screencasts veröffentlicht, die es in Aktion zeigen: Ссылка , Ссылка .
  3. Serpent : ein kompakter und leistungsfähiger Serializer. ZeroBrane Studio verwendet Serpent, um komplexe Datenstrukturen in den Fenstern Console und Stack anzuzeigen.
  4. ZeroBrane Studio enthält einen statischen Analysator (basierend auf metalua und lua-inspect), mit dem Sie dieselben Probleme erkennen können (und mehr) das strict.lua erkennt, aber während der Entwicklung (bevor Sie den Code ausführen).
  5. Hinsichtlich der Überwachung von Änderungen bietet MobDebug eine Möglichkeit, dies für jeden Typ von Variablen (nicht nur für Tabellen) zu tun. Ich habe es in einem anderen SO-Post beschrieben. Diese Funktionalität ist noch nicht über ZeroBrane Studio verfügbar.
Paul Kulchenko 27.08.2012 20:13
quelle
1

Mögliche Debugging-Optionen für OS X:

Judge Maygarden 08.10.2010 14:19
quelle

Tags und Links