Welche allgemeinen Tipps haben Sie zum Golfen in Haxe ? Ich bin auf der Suche nach Ideen, die sich auf Code-Golf-Probleme anwenden lassen und die zumindest etwas spezifisch für Haxe sind (z. B. "Kommentare entfernen" ist keine Antwort).
Bitte posten Sie einen Tipp pro Antwort.
Haxe können online ausgeführt werden hier !
Antworten:
String-Interpolation
Haxe unterstützt die Zeichenfolgeninterpolation für Zeichenfolgen mit einfachen Anführungszeichen. Wie bei Vorlagenzeichenfolgen in JavaScript ES6 können Sie einen Ausdruck in eine Zeichenfolge einfügen mit
${...}
:Im Gegensatz zu ES6 können Sie die geschweiften Klammern jedoch weglassen, wenn der Ausdruck eine einzelne Variable ist:
Diese beiden Beispiele werden gedruckt
2 + 2 = 4
.quelle
Array-Verständnis
Haxe unterstützt Array-Verständnis:
Im Gegensatz zu vielen anderen Sprachen können Sie auch verwenden
while
in Begriffen verwenden:Dies kann sehr nützlich sein, wenn Sie nicht wissen, wie lange ein Array benötigt wird.
Sie können auch mit Kette
for
,while
undif
Aussagen:quelle
Bereichsoperator
Haxe verfügt über einen Bereichsoperator, mit
...
dem ganze Zahlenbereiche erstellt werden können. Zum Beispiel stattdessen:Du kannst das:
Besonderheiten für
x...y
:x
undy
müssen beide Ints sein.x
kann nicht größer sein alsy
.quelle
Bedingtes Ausführen einer Anweisung
Natürlich können Sie alles mit
if
folgenden Bedingungen ausführen :Wenn Sie jedoch wie oben nur eine Anweisung haben, können Sie den ternären bedingten Operator verwenden, um ein Byte zu speichern:
Sie können manchmal ein anderes Byte speichern
&&
, obwohl dies sehr selten ist, da es&&
nur funktioniert, wenn beide Ausdrücke Boolesche Werte zurückgeben:Eine wichtige Ausnahme bilden Schlüsselwörter : Wenn Haxe auf einen
return
,break
odercontinue
irgendwo anders stößt , wird er sofort ausgeführt und der Ausdruck, an dem er gearbeitet hat, beendet. Dies bedeutet, dass stattdessen:Sie können dies tun, um 2 Bytes zu sparen:
quelle
Verwenden Sie Schlüsselwörter in Ausdrücken
Ein weiteres ungewöhnliches Merkmal von Haxe ist, dass alles ein Ausdruck ist . Zum Beispiel ist dieser Code vollkommen gültig:
Okay, das ist ein ziemlich nutzloses Beispiel, aber hoffentlich verstehen Sie meinen Standpunkt. Dies funktioniert mit den meisten Schlüsselwörtern:
Dies ermöglicht es Ihnen natürlich,
if
/else
inline zu verwendenp=if(n>1)7else 4;
p=n>1?7:4;
kürzer ist.Schlüsselwörter, die Sie nicht inline verwenden können
var
- Der Compiler beschwert sich über den Versuch, Void als Wert zu verwenden.for
/while
- Wie oben, obwohl Sie sie in Array-Verständnis verwenden können .quelle
Funktionsklammern weglassen
Im Gegensatz zu den meisten Sprachen ist alles in Haxe ein Ausdruck , einschließlich
{blocks}
. Daher können geschweifte Klammern an einer beliebigen Stelle in einem Haxe-Programm (mit Ausnahme vonswitch
Ausdrücken) weggelassen werden, wenn sie nur eine einzige Anweisung enthalten. Also stattdessen:Du kannst das:
Einfache zwei Bytes, die für viele Funktionen gespeichert werden.
Selbst wenn eine Funktion mehrere Anweisungen enthalten muss, können Sie oft ein Byte speichern, indem Sie den Block nach
return
außen verschieben:Dies funktioniert, weil ein Block bis zum letzten Ausdruck innerhalb des Blocks ausgewertet wird.
quelle
n*n*n
, oder gleichwertign*n*n*n
für den Tesseract einer Zahl, usw. ... HierMath.pow
dient er jedoch als gutes Beispiel.Math.pow(3,n)
stattdessen ;-)