Quels conseils généraux avez-vous pour jouer au golf à Haxe ? Je recherche des idées qui peuvent être appliquées aux problèmes de code-golf et qui sont également au moins quelque peu spécifiques à Haxe (par exemple, "supprimer les commentaires" n'est pas une réponse).
Veuillez poster un pourboire par réponse.
Haxe peut être exécuté en ligne ici !
Réponses:
Interpolation de chaînes
Haxe prend en charge l' interpolation de chaînes sur les chaînes de guillemets simples. Comme les chaînes de modèle dans JavaScript ES6, vous pouvez inclure une expression dans une chaîne avec
${...}
:Contrairement à ES6, cependant, vous pouvez omettre les accolades lorsque l'expression est une seule variable:
Ces deux exemples s'impriment
2 + 2 = 4
.la source
Compréhensions de tableau
Haxe prend en charge les compréhensions de tableaux:
Contrairement à de nombreuses autres langues, vous pouvez également utiliser
while
dans les compréhensions:Cela peut être très utile lorsque vous ne savez pas combien de temps vous avez besoin d'un tableau.
Vous pouvez également la chaîne
for
,while
, etif
déclarations:la source
Opérateur de gamme
Haxe possède un opérateur de plage
...
qui peut être utilisé pour créer des plages d'entiers. Par exemple, au lieu de cela:Tu peux le faire:
Spécificités pour
x...y
:x
ety
doivent tous deux être Ints.x
ne peut pas être plus grand quey
.la source
Exécution conditionnelle d'une instruction
Évidemment, vous pouvez exécuter n'importe quoi de manière conditionnelle avec
if
:Si, cependant, vous n'avez qu'une seule instruction comme ci-dessus, vous pouvez utiliser l'opérateur conditionnel ternaire pour enregistrer un octet:
Vous pouvez parfois enregistrer un autre octet en utilisant
&&
, bien que ce soit très rare car cela&&
ne fonctionne que si les deux expressions renvoient des booléens:Une exception majeure à cela est les mots clés : si Haxe rencontre un
return
,break
oucontinue
n'importe où , il l'exécutera immédiatement et quittera l'expression sur laquelle il travaillait. Cela signifie qu'au lieu de cela:Vous pouvez le faire pour économiser 2 octets:
la source
Utiliser des mots clés dans les expressions
Une autre caractéristique inhabituelle de Haxe est que tout est une expression . Par exemple, ce code est parfaitement valide:
D'accord, c'est un exemple assez inutile, mais j'espère que vous comprendrez mon point. Cela fonctionne avec la plupart des mots clés:
Cela vous permet d'utiliser
if
/else
inline, commep=if(n>1)7else 4;
, bien que ce soit bien sûrp=n>1?7:4;
plus court.Mots clés que vous ne pouvez pas utiliser en ligne
var
- Le compilateur se plaindra d'essayer d'utiliser Void comme valeur.for
/while
- Comme ci-dessus, mais vous pouvez les utiliser dans les compréhensions de tableaux .la source
Omettre les crochets de fonction
Contrairement à la plupart des langues, tout dans Haxe est une expression , y compris
{blocks}
. Ainsi, les accolades n'importe où dans un programme Haxe (à l'exception desswitch
expressions) peuvent être supprimées si elles ne contiennent qu'une seule instruction. Donc au lieu de ça:Tu peux le faire:
Deux octets faciles enregistrés sur de nombreuses fonctions.
Même si une fonction doit contenir plusieurs instructions, vous pouvez souvent enregistrer un octet en déplaçant l'
return
extérieur du bloc:Cela fonctionne car un bloc évalue la dernière expression à l'intérieur du bloc.
la source
n*n*n
, ou de manière équivalenten*n*n*n
pour le tesseract d'un nombre, etc ... Cependant,Math.pow
sert ici de bon exemple.Math.pow(3,n)
place ;-)