Quels conseils avez-vous pour jouer au golf dans Applescript? Je cherche des idées qui peuvent être appliquées aux problèmes de golf de code en général qui sont au moins quelque peu spécifiques à Applescript (par exemple, "supprimer les commentaires" n'est pas une réponse).
13
Réponses:
L'
of
opérateur est utilisé pour obtenir une propriété d'un objet:Mais dans de nombreux cas, vous pouvez utiliser
's
un raccourci pour enregistrer 1 caractère:la source
L'éditeur Applescript est un petit IDE pratique qui met en évidence la syntaxe et embellit votre code. Cependant, aux fins du golf, il est contre-productif car il ajoute une indentation et des mots-clés superflus, par exemple après des
end
déclarations. Par exemple:devient ce qui suit une fois collé dans l'éditeur Applescript et compilé / exécuté:
Évidemment, le premier extrait est meilleur pour le golf.
la source
end
est assez spécifique à Applescript.end
appartient à quelle instruction de début de bloc lorsque vous avez plusieurs blocs imbriquéstell
les blocs sont courants dans Applescript:Cependant, pour économiser de l'espace, ce qui suit est équivalent, lorsque l'intérieur du
tell
bloc est composé d'une seule ligne:la source
tell app "TextEdit" to activate
.Certains mots ont des synonymes plus courts. Par exemple,
application
peut être écrit commeapp
* etstring
peut être écrit commetext
.Aussi,
every <noun>
peut être écrit simplement au pluriel, comme danscharacters of "hello world"
(ou"foo"'s characters
).* Bien que le compilateur de Script Editor le remodifie.
la source
Devis requis Opération
Pour toute opération nécessitant un devis pour faire quelque chose, c'est à dire
Vous pouvez raccourcir à
Répétition
Dans les boucles répétitives, on peut entièrement supprimer le mot "fois".
contre
<= et> =
Chaque fois que ces opérateurs sont appelés, vous pouvez les remplacer respectivement par
≤
et≥
. Bien que cela puisse ne pas réduire le nombre octet (sauf si les conventions de comptage d'octets spéciaux sont mis en œuvre, que je suggère), il fait réduire le nombre de caractères.Saisir de STDIN
Vous pouvez saisir à partir de STDIN avec les caractères suivants:
Sortir rapidement
Si vous avez besoin de quitter un code rapidement (pour une raison quelconque, c'est-à-dire en évitant des
if
s excessifs )la source
Applescript permet d'insérer des mots clés supplémentaires pour améliorer la lisibilité:
Mais le
the
ici est complètement superflu et peut être omis pour une sauvegarde de 4 caractères:la source
log"Hello World"'s words
parce que vous 1) n'avez pas besoin d'espace entre une expression et un élément cité, et 2) parce que vous's
pouvez l'utiliser en remplacement deof
.'s
est adressé dans cette réponse codegolf.stackexchange.com/a/37643/11259 . Bon à savoirlog"
cependant.Raccourcissement du support
Semblable à l'article sur les citations, j'ai réalisé plus tard que vous pouvez également raccourcir des choses comme ceci:
à
Il espacera également les supports pour vous. Dans cet exemple, j'économise 5 octets.
la source
Considérant...
Dans les questions qui nécessitent une sensibilité à la casse, il peut être difficile de traiter les cas.
JUSQU'À MAINTENANT:
Je ne connaissais pas vraiment ce mot-clé jusqu'à ce que j'en ai vraiment besoin. En utilisant les autres conseils de cette page de conseils, nous pouvons réduire cela à:
Pour autant que je sache, cela nécessite une déclaration complète. (J'ai essayé beaucoup de choses.) Voir cette page pour plus de détails.
la source
Dans quelques cas exceptionnels, les «doubles angles» ou «doubles chevrons» peuvent être plus courts que le nom anglais d'une commande, d'un paramètre ou d'une constante.
La forme encodée en chevrons réduirait l'AppleScript pour supprimer le presse-papiers de 20 à 16 caractères:
Il laisserait tomber 2 caractères lors de la récupération de texte dans une boîte de dialogue (comme cela se produit dans le métronome et Pi Day ):
(Vous préférerez peut-être éviter la boîte de dialogue et utiliser les arguments de ligne de commande d' osascript (1) , si vous avez au moins Mac OS X 10.4.)
Avec un clavier américain, «est option- \ et» est option-shift- \. Une commande
«event abcdefgh»
comporte 16 caractères. Un paramètre ou une constante«class abcd»
a 12 caractères.La forme codée en chevrons est presque toujours trop longue pour le golf. Voici un exemple sans parenthèses à double angle:
Et la même chose avec eux:
Changer
_open for access
(16) en«event rdwropen»
(16) était neutre. Changerwrite permission_
(17) engiven«class perm»:
(18) coûte 1 caractère. Les autres supports à double angle coûtent plus cher.Pour utiliser des parenthèses à double angle, vous devez connaître le code magique à 4 ou 8 lettres. J'ai trouvé quelques codes en enregistrant un fichier de script depuis Script Editor, puis en l'ouvrant dans un éditeur hexadécimal. J'ai couru
emacs
dans un terminal et utiliséM-x hexl-find-file
. J'ai trouvé et édité certains codes, commeJonspClp
intoJanspClp
etttxt
intoatxt
. J'ai ensuite enregistré le fichier et l'ai rouvert dans Script Editor.«event JanspClp»
et«class atxt»
est apparu dans le script.Un document intitulé Terminologie AppleScript et référence des codes d'événements Apple répertorie certains codes. J'en ai trouvé une copie sur https://applescriptlibrary.wordpress.com/
L'éditeur de script traduira les crochets doubles en anglais avant d'enregistrer votre script. Pour la déférence chevron, vous devez écrire votre script dans un autre éditeur de texte, comme TextEdit. Enregistrez le script en tant que fichier texte brut dans l'encodage Mac OS Roman (ou MacRoman). Mac OS X préfère que vous nommiez le fichier avec un suffixe .applescript.
Si vous comptez des octets, MacRoman a 1 octet par caractère, donc chaque «ou» compte pour 1 octet.
la source