Jakie masz ogólne wskazówki na temat gry w golfa w Haxe ? Szukam pomysłów, które można by zastosować do problemów z golfem i które są przynajmniej w pewnym stopniu specyficzne dla Haxe (np. „Usuń komentarze” nie jest odpowiedzią).
Proszę zamieścić jedną wskazówkę na odpowiedź.
Haxe można uruchomić tutaj online !
Odpowiedzi:
Interpolacja ciągów
Haxe obsługuje interpolację łańcuchów w łańcuchach pojedynczych cudzysłowów. Podobnie jak ciągi szablonów w JavaScript ES6, możesz zawrzeć wyrażenie w ciągu
${...}
:W przeciwieństwie do ES6 można jednak pominąć nawiasy klamrowe, gdy wyrażenie jest pojedynczą zmienną:
Wydrukowano oba te przykłady
2 + 2 = 4
.źródło
Zrozumienia tablic
Haxe obsługuje tablice:
W przeciwieństwie do wielu innych języków, możesz także używać
while
w zrozumieniu:Może to być bardzo przydatne, gdy nie wiesz, jak długo potrzebujesz tablicy.
Można również łańcuchowe
for
,while
, iif
oświadczenia:źródło
Operator zasięgu
Haxe ma operator zakresu,
...
którego można używać do tworzenia zakresów liczb całkowitych. Na przykład zamiast tego:Możesz to zrobić:
Specyfika dla
x...y
:x
iy
oba muszą być Ints.x
nie może być większy niży
.źródło
Warunkowe uruchomienie instrukcji
Oczywiście możesz uruchomić wszystko warunkowo za pomocą
if
:Jeśli jednak masz tylko jedną instrukcję jak powyżej, możesz użyć trójskładnikowego operatora warunkowego, aby zapisać bajt:
Czasami możesz zapisać kolejny bajt
&&
, chociaż jest to bardzo rzadkie, ponieważ&&
działa tylko wtedy, gdy oba wyrażenia zwracają logiczne:Jednym z głównych wyjątkiem jest wyszukiwane : jeśli Haxe napotyka na
return
,break
lubcontinue
gdziekolwiek , to natychmiast uruchomić go i rzucić cokolwiek ekspresja była ona pracuje. Oznacza to, że zamiast tego:Możesz to zrobić, aby zapisać 2 bajty:
źródło
Używaj słów kluczowych w wyrażeniach
Inną niezwykłą cechą Haxe jest to, że wszystko jest wyrażeniem . Na przykład ten kod jest całkowicie poprawny:
Ok, to dość bezużyteczny przykład, ale mam nadzieję, że rozumiesz. Działa to z większością słów kluczowych:
Pozwala to na użycie
if
/else
inlinep=if(n>1)7else 4;
, chociaż oczywiściep=n>1?7:4;
jest ono krótsze.Słowa kluczowe, których nie można używać bezpośrednio
var
- Kompilator będzie narzekał na próbę użycia Void jako wartości.for
/while
- Taki sam jak powyżej, ale można ich używać w interpretacjach tablicowych .źródło
Pomiń nawiasy funkcyjne
W przeciwieństwie do większości języków, wszystko w Haxe jest wyrażeniem , w tym
{blocks}
. Zatem nawiasy klamrowe w dowolnym miejscu w programie Haxe (z wyjątkiemswitch
wyrażeń) można pominąć, jeśli zawierają tylko jedną instrukcję. Zamiast tego:Możesz to zrobić:
Łatwe dwa bajty zapisane na wielu funkcjach.
Nawet jeśli funkcja musi zawierać wiele instrukcji, często można zapisać bajt, przesuwając
return
poza blok:Działa to, ponieważ blok ocenia do ostatniego wyrażenia w bloku.
źródło
n*n*n
lub jej odpowiednikan*n*n*n
dla tesseract liczby, itp. JednakMath.pow
służy tutaj jako dobry przykład.Math.pow(3,n)
zamiast ;-)