Tips umum apa yang Anda miliki untuk bermain golf di Haxe ? Saya mencari ide yang dapat diterapkan untuk masalah kode-golf dan yang juga setidaknya agak spesifik untuk Haxe (mis. "Hapus komentar" bukan jawaban).
Silakan kirim satu tip per jawaban.
Haxe dapat dijalankan online di sini !
Jawaban:
Interpolasi string
Haxe mendukung interpolasi string pada string kutipan tunggal. Seperti string templat di JavaScript ES6, Anda bisa memasukkan ekspresi dalam string dengan
${...}
:Tidak seperti ES6, Anda bisa menghilangkan kurung keriting ketika ekspresi adalah variabel tunggal:
Kedua contoh ini dicetak
2 + 2 = 4
.sumber
Array pemahaman
Haxe mendukung pemahaman array:
Tidak seperti banyak bahasa lain, Anda juga dapat menggunakannya
while
dalam pemahaman:Ini bisa sangat berguna ketika Anda tidak tahu berapa lama array yang Anda butuhkan.
Anda juga dapat rantai
for
,while
danif
pernyataan:sumber
Operator jangkauan
Haxe memiliki operator jangkauan
...
yang dapat digunakan untuk membuat rentang bilangan bulat. Misalnya, alih-alih ini:Kamu bisa melakukan ini:
Spesifik untuk
x...y
:x
dany
keduanya harus Ints.x
tidak boleh lebih besar dariy
.sumber
Menjalankan pernyataan secara kondisional
Jelas Anda dapat menjalankan apa saja dengan persyaratan
if
:Namun, jika Anda hanya memiliki satu pernyataan di atas, Anda dapat menggunakan operator kondisional ternary untuk menyimpan byte:
Anda kadang-kadang dapat menyimpan byte lain dengan menggunakan
&&
, meskipun ini sangat jarang karena&&
hanya berfungsi jika kedua ekspresi mengembalikan boolean:Satu pengecualian utama untuk ini adalah kata kunci : jika Haxe berjalan ke dalam
return
,break
ataucontinue
di mana saja , itu akan segera menjalankannya dan berhenti ekspresi apa pun itu kerjakan. Ini berarti bahwa alih-alih ini:Anda dapat melakukan ini untuk menghemat 2 byte:
sumber
Gunakan kata kunci dalam ekspresi
Fitur lain yang tidak biasa dari Haxe adalah bahwa semuanya adalah ekspresi . Misalnya, kode ini benar-benar valid:
Oke, itu contoh yang tidak berguna, tapi semoga Anda mengerti maksud saya. Ini berfungsi dengan sebagian besar kata kunci:
Ini memungkinkan Anda untuk menggunakan
if
/else
inline, sepertip=if(n>1)7else 4;
, meskipun tentu sajap=n>1?7:4;
lebih pendek.Kata kunci yang tidak dapat Anda gunakan sebaris
var
- Compiler akan mengeluh tentang mencoba menggunakan Void sebagai nilai.for
/while
- Sama seperti di atas, meskipun Anda dapat menggunakannya dalam pemahaman array .sumber
Abaikan tanda kurung fungsi
Tidak seperti kebanyakan bahasa, semua yang ada di Haxe adalah ekspresi , termasuk
{blocks}
. Dengan demikian, kurung keriting di mana saja dalam program Haxe (dengan pengecualianswitch
ekspresi) dapat dikesampingkan jika hanya berisi satu pernyataan. Jadi alih-alih ini:Kamu bisa melakukan ini:
Dua byte mudah disimpan pada banyak fungsi.
Bahkan jika suatu fungsi harus mengandung banyak pernyataan, Anda dapat sering menyimpan byte dengan memindahkan
return
blok di luar:Ini berfungsi karena blok mengevaluasi ekspresi terakhir di dalam blok.
sumber
n*n*n
, atau setaran*n*n*n
dengan tesseract nomor, dll ... Namun,Math.pow
berfungsi sebagai contoh yang baik di sini.Math.pow(3,n)
sebagai gantinya ;-)