Kiat apa yang Anda miliki untuk bermain golf di Applescript? Saya mencari ide yang dapat diterapkan pada masalah kode golf secara umum yang setidaknya agak spesifik untuk Applescript (mis. "Hapus komentar" bukan jawaban).
Pertanyaan ini Terlalu Luas. Itu tidak mungkin dijawab dengan satu jawaban yang lengkap dan ditulis dengan baik (dan pertanyaan itu bahkan secara eksplisit melarang itu).
Rainbolt
1
Tetap saja, ini hanya pertanyaan lucu :)
MadTux
5
Ditandai untuk dikonversi ke CW (sesuai konvensi kami untuk 'kiat bermain golf di pertanyaan x').
Tampaknya agak konyol, tetapi juga agak luar biasa, bahwa Applescript mem-parsing apostrof sebagai posesif. Saya bisa membayangkan salah satu perancang bahasa mengajukan gagasan itu kepada kelompok.
Geobits
9
@ Geobits Itu adalah kata sifat yang bagus untuk menggambarkan Applescript secara umum. Saya hanya belum memutuskan apakah Applescript luar biasa mengagumkan atau luar biasa konyol ;-)
Digital Trauma
4
Editor Applescript adalah IDE kecil praktis yang menyoroti dan mempercantik kode Anda. Namun, untuk tujuan bermain golf, itu kontraproduktif karena menambahkan lekukan dan kata kunci berlebihan, misalnya setelah endpernyataan. Sebagai contoh:
repeat with w in "Hello World"'s words
log w
end
menjadi yang berikut saat disisipkan ke dalam Editor Applescript dan dikompilasi / dijalankan:
repeat with w in "Hello World"'s words
log w
end repeat
Jelas potongan pertama lebih baik untuk tujuan bermain golf.
IMO ini dapat dilihat sebagai tip umum, tidak khusus untuk AS. Banyak IDE modern melakukan ini jika Anda membiarkannya.
Geobits
2
@ Geobits Setuju. Padahal saya pikir penambahan kata kunci spesifik setelah endini cukup spesifik.
Digital Trauma
Ya, itu hanya membingungkan saya. Namun, lekukan / spasi sangat umum, bersama dengan tanda kurung yang tidak perlu, dll.
Geobits
@Geobits Applescript adalah tentang keterbacaan. Saya kira idenya adalah untuk memperjelas siapa endyang memiliki pernyataan mulai blok mana ketika Anda memiliki beberapa blok bersarang
Digital Trauma
4
tell blok umum di Applescript:
tell application "TextEdit"
activate
end tell
Namun untuk menghemat ruang, yang berikut ini setara, ketika bagian dalam tellblok hanya satu baris:
Untuk setiap operasi yang memerlukan penawaran harga untuk melakukan sesuatu, yaitu
log "Halo Dunia!"
Anda dapat mempersingkat menjadi
log "Halo Dunia!"
Mengulangi
Dalam loop berulang, seseorang dapat sepenuhnya menghapus kata "kali".
ulangi x kali
akhir
melawan
ulangi x
akhir
<= dan> =
Setiap kali operator ini dipanggil, Anda dapat menggantinya dengan ≤dan ≥, masing-masing. Meskipun ini mungkin tidak mengurangi jumlah byte (kecuali byte khusus konvensi penghitungan diimplementasikan, yang saya sarankan), itu tidak mengurangi jumlah karakter.
Meraih dari STDIN
Anda dapat mengambil dari STDIN dengan karakter berikut:
di jalankan argv
akhir
Keluar dengan cepat
Jika Anda perlu keluar dari kode dengan cepat (untuk alasan apa pun, misalnya mencegah kelebihan if) ...
Anda dapat memiliki varian yang lebih pendek:, log"Hello World"'s wordskarena Anda 1) tidak memerlukan spasi antara ekspresi apa pun dan item yang dikutip, dan 2) karena 'sdapat digunakan sebagai pengganti of.
Dalam pertanyaan yang membutuhkan sensitivitas kasus, mungkin sulit untuk benar-benar menangani kasus.
SAMPAI SEKARANG:
mempertimbangkan kasus
(ada hubungannya dengan hal-hal sensitif huruf)
akhir mempertimbangkan
Saya tidak benar-benar tahu kata kunci ini sampai saya benar-benar membutuhkannya. Dengan menggunakan kiat lain di laman kiat ini, kami dapat mengurangi ini ke:
mempertimbangkan kasus
(ada hubungannya dengan hal-hal sensitif huruf)
akhir
Itu memang membutuhkan pernyataan lengkap, sejauh yang saya tahu. (Saya sudah mencoba banyak hal.) Lihat halaman ini untuk lebih jelasnya.
Dalam beberapa kasus luar biasa, «kurung sudut ganda» atau «chevron ganda» mungkin lebih pendek dari nama bahasa Inggris dari perintah, parameter, atau konstanta.
Bentuk yang dikodekan chevron akan mengecilkan AppleScript untuk menghapus clipboard dari 20 hingga 16 karakter:
set the clipboard to -- 20
«event JonspClp» -- 16
Itu akan menjatuhkan 2 karakter ketika mengambil teks dari dialog (seperti yang terjadi di metronom dan Pi Day ):
(display dialog""default answer"")'s text returned -- 46
(display dialog""default answer"")'s«class ttxt» -- 44
(Anda mungkin lebih suka menghindari dialog dan menggunakan argumen baris perintah osascript (1) , jika Anda memiliki setidaknya Mac OS X 10.4.)
Dengan keyboard US, «adalah opsi- \ dan» adalah opsi-shift- \. Perintah «event abcdefgh»memiliki 16 karakter. Parameter atau konstanta «class abcd»memiliki 12 karakter.
Bentuk yang dikodekan chevron hampir selalu terlalu panjang untuk golf. Berikut ini contoh tanpa kurung sudut ganda:
set x to open for access"output"write permission 1
write"One line of text
"to x
close access x
Dan sama dengan mereka:
set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x
Mengubah _open for access(16) menjadi «event rdwropen»(16) netral. Mengubah write permission_(17) menjadi given«class perm»:(18) biaya 1 karakter. Kurung sudut ganda lainnya harganya lebih mahal.
Untuk menggunakan kurung sudut ganda, Anda perlu mengetahui kode ajaib 4 huruf atau 8 huruf. Saya menemukan beberapa kode dengan menyimpan file skrip dari Script Editor, lalu membukanya di hex editor. Saya berlari emacsdi terminal dan digunakan M-x hexl-find-file. Saya menemukan dan mengedit beberapa kode, seperti JonspClpke JanspClp, dan ttxtke atxt. Saya kemudian menyimpan file dan membukanya kembali di Script Editor. «event JanspClp»dan «class atxt»muncul dalam naskah.
Dokumen berjudul AppleScript Terminology dan Apple Event Codes Reference berisi daftar beberapa kode. Saya menemukan salinannya di https://applescriptlibrary.wordpress.com/
Editor Skrip akan menerjemahkan kurung sudut ganda ke Bahasa Inggris sebelum menyimpan skrip Anda. Untuk penghormatan chevron, Anda harus menulis skrip Anda di editor teks lain, seperti TextEdit. Simpan skrip sebagai file teks biasa di penyandian Mac OS Roman (atau MacRoman). Mac OS X lebih suka bahwa Anda memberi nama file dengan akhiran .applescript.
Jika Anda menghitung byte, MacRoman memiliki 1 byte per karakter, sehingga setiap «atau» dihitung sebagai 1 byte.
Jawaban:
The
of
operator yang digunakan untuk mendapatkan properti dari suatu objek:Namun dalam banyak kasus, Anda dapat menggunakan
's
pintasan untuk menyimpan 1 karakter:sumber
Editor Applescript adalah IDE kecil praktis yang menyoroti dan mempercantik kode Anda. Namun, untuk tujuan bermain golf, itu kontraproduktif karena menambahkan lekukan dan kata kunci berlebihan, misalnya setelah
end
pernyataan. Sebagai contoh:menjadi yang berikut saat disisipkan ke dalam Editor Applescript dan dikompilasi / dijalankan:
Jelas potongan pertama lebih baik untuk tujuan bermain golf.
sumber
end
ini cukup spesifik.end
yang memiliki pernyataan mulai blok mana ketika Anda memiliki beberapa blok bersarangtell
blok umum di Applescript:Namun untuk menghemat ruang, yang berikut ini setara, ketika bagian dalam
tell
blok hanya satu baris:sumber
tell app "TextEdit" to activate
.Beberapa kata memiliki sinonim yang lebih pendek. Misalnya,
application
dapat ditulis sebagaiapp
*, danstring
dapat ditulis sebagaitext
.Juga,
every <noun>
dapat ditulis hanya sebagai jamak, seperti dalamcharacters of "hello world"
(atau"foo"'s characters
).* Meskipun kompiler Script Editor akan mengubahnya kembali.
sumber
Operasi yang Dibutuhkan Kutipan
Untuk setiap operasi yang memerlukan penawaran harga untuk melakukan sesuatu, yaitu
Anda dapat mempersingkat menjadi
Mengulangi
Dalam loop berulang, seseorang dapat sepenuhnya menghapus kata "kali".
melawan
<= dan> =
Setiap kali operator ini dipanggil, Anda dapat menggantinya dengan
≤
dan≥
, masing-masing. Meskipun ini mungkin tidak mengurangi jumlah byte (kecuali byte khusus konvensi penghitungan diimplementasikan, yang saya sarankan), itu tidak mengurangi jumlah karakter.Meraih dari STDIN
Anda dapat mengambil dari STDIN dengan karakter berikut:
Keluar dengan cepat
Jika Anda perlu keluar dari kode dengan cepat (untuk alasan apa pun, misalnya mencegah kelebihan
if
) ...sumber
Applescript memungkinkan beberapa kata kunci tambahan dimasukkan untuk membantu keterbacaan:
Tetapi di
the
sini benar-benar berlebihan dan dapat dihilangkan untuk penghematan 4 karakter:sumber
log"Hello World"'s words
karena Anda 1) tidak memerlukan spasi antara ekspresi apa pun dan item yang dikutip, dan 2) karena's
dapat digunakan sebagai penggantiof
.'s
ditujukan dalam jawaban ini codegolf.stackexchange.com/a/37643/11259 . Senang tahu tentang itulog"
.Pemendekan Bracket
Mirip dengan posting tentang kutipan, saya menyadari kemudian bahwa Anda juga dapat mempersingkat hal-hal seperti ini:
untuk
Ini akan menghilangkan kurung untuk Anda juga. Dalam contoh ini, saya menyimpan 5 byte.
sumber
Mengingat...
Dalam pertanyaan yang membutuhkan sensitivitas kasus, mungkin sulit untuk benar-benar menangani kasus.
SAMPAI SEKARANG:
Saya tidak benar-benar tahu kata kunci ini sampai saya benar-benar membutuhkannya. Dengan menggunakan kiat lain di laman kiat ini, kami dapat mengurangi ini ke:
Itu memang membutuhkan pernyataan lengkap, sejauh yang saya tahu. (Saya sudah mencoba banyak hal.) Lihat halaman ini untuk lebih jelasnya.
sumber
Dalam beberapa kasus luar biasa, «kurung sudut ganda» atau «chevron ganda» mungkin lebih pendek dari nama bahasa Inggris dari perintah, parameter, atau konstanta.
Bentuk yang dikodekan chevron akan mengecilkan AppleScript untuk menghapus clipboard dari 20 hingga 16 karakter:
Itu akan menjatuhkan 2 karakter ketika mengambil teks dari dialog (seperti yang terjadi di metronom dan Pi Day ):
(Anda mungkin lebih suka menghindari dialog dan menggunakan argumen baris perintah osascript (1) , jika Anda memiliki setidaknya Mac OS X 10.4.)
Dengan keyboard US, «adalah opsi- \ dan» adalah opsi-shift- \. Perintah
«event abcdefgh»
memiliki 16 karakter. Parameter atau konstanta«class abcd»
memiliki 12 karakter.Bentuk yang dikodekan chevron hampir selalu terlalu panjang untuk golf. Berikut ini contoh tanpa kurung sudut ganda:
Dan sama dengan mereka:
Mengubah
_open for access
(16) menjadi«event rdwropen»
(16) netral. Mengubahwrite permission_
(17) menjadigiven«class perm»:
(18) biaya 1 karakter. Kurung sudut ganda lainnya harganya lebih mahal.Untuk menggunakan kurung sudut ganda, Anda perlu mengetahui kode ajaib 4 huruf atau 8 huruf. Saya menemukan beberapa kode dengan menyimpan file skrip dari Script Editor, lalu membukanya di hex editor. Saya berlari
emacs
di terminal dan digunakanM-x hexl-find-file
. Saya menemukan dan mengedit beberapa kode, sepertiJonspClp
keJanspClp
, danttxt
keatxt
. Saya kemudian menyimpan file dan membukanya kembali di Script Editor.«event JanspClp»
dan«class atxt»
muncul dalam naskah.Dokumen berjudul AppleScript Terminology dan Apple Event Codes Reference berisi daftar beberapa kode. Saya menemukan salinannya di https://applescriptlibrary.wordpress.com/
Editor Skrip akan menerjemahkan kurung sudut ganda ke Bahasa Inggris sebelum menyimpan skrip Anda. Untuk penghormatan chevron, Anda harus menulis skrip Anda di editor teks lain, seperti TextEdit. Simpan skrip sebagai file teks biasa di penyandian Mac OS Roman (atau MacRoman). Mac OS X lebih suka bahwa Anda memberi nama file dengan akhiran .applescript.
Jika Anda menghitung byte, MacRoman memiliki 1 byte per karakter, sehingga setiap «atau» dihitung sebagai 1 byte.
sumber